Android ve XMPP: Şu anda kullanılabilir çözümler [kapalı]


165

Android geliştirme için hangi XMPP kütüphanesi günümüzde en iyi seçim olacaktır?

  • Ben burada SO diğer birçok soru önerildiği gibi yamalı Smack kütüphanesini kullanıyorum . Ancak, bu iki yıl önce Smack API'sının yamalı bir sürümüdür. Ve genellikle iyi çalışmasına rağmen, daha yeni, daha yeni seçenekleri araştırıyorum.

  • Resmi Smack API'sine baktım ve küçük bir araştırmadan sonra, bugünlerde (gerçekten gerçek bir uygulamada denememiş olsam da) işe yarayabilir gibi görünüyor.

  • Karşılaştığım başka bir çözüm daha var, Beem'in aSMACK kütüphanesi . Beem android için oldukça yeni bir XMPP istemcisi ve anladıklarımdan kendi aSMACK sürümlerini kullanıyorlar.

  • Son olarak, aSMACK var ama bu da bir süredir güncellenmedi (sitenin önerdiği gibi).

Başka önerileriniz var mı yoksa geri kalanlar için neden yukarıdakilerden birini seçmem gerektiğini açıklayabilir misiniz?


2
Sonunda ne yaptın? Resmi şaplak kullanılıp kullanılmayacağına karar vermeye çalışıyorum?
Tom

2
Sadece bir ping / not, bunu kapatmasına neden olan kopya lehine yeniden açtım.
Tim Post

80
Bu sorunun kapatılmasının büyük bir hata olduğunu düşünüyorum . Android'de XMPP'ye dahil olmak , "Android'de XMPP'yi nasıl kullanabilirim?" Sorusunda tek güvenilir ve güncel kaynak olduğunu söyleyebilirim. tüm net. Kapatarak SO'dan yüksek kalite değeri alırsınız. Soru, bir yıl boyunca açıktı ve bu soruyu işaret eden kopyalar ile aynı yerde kapalı olan soruları sordu. Bunu kapatmanın nedenini "yapıcı değil" olarak görmüyorum: Gerçek bir dünya sorununa dayanıyor, gerçekleri ve referansları içeriyor. Ayrıca bkz. Upvote ve fav sayısı.
Akış

4
@casperOne Hasta açıklamalarınız için teşekkür ederiz. Stackoverflow ile ilgili sorunun nerede olduğunu anlamama yardımcı olur. Belki bunu meta olarak gündeme getireceğim, ancak görünüşe göre bu çoğunluğun görüşü ve zaten birçok kez tartışıldı. Özellikle yıllarca oylarla kapatılmadığı için doğru hissetmiyor.
Debi

4
"Akış" ve "casperOne" arasındaki tartışma daha ilginç "android XMPP nasıl" için benim ihtiyaç dışında. İnternette xmpp için dolaştım ve günün sonunda buradayım, bu yazıya geldim, bu da iki yıl OP'den sonra bile XMPP için kullanabileceğim kütüphaneler hakkında daha spesifik bilgiler veriyor, kesinlikle benim için yapıcı ve yüzlerce olacak için sohbet uygulamaları. "ETKİNLİKLER", "AKIŞIN" bakış açısının bu soruların kapatılması üzerinde doğru olduğunu "KURALLAR" dan daha fazla konuşuyor.
Pankaj

Yanıtlar:


106

şaplak

Smack açık kaynaklı bir XMPP istemci kütüphanesidir. Sürüm 4.1'den beri Android'de doğal olarak çalışır. Daha fazla bilgi için "Smack 4.3 Benioku" dosyasına bakın ve Gerçek Zamanlı Ignite'deki Smack proje sayfasına bakın .


8
Smack 3.2.0'ı bir araya getirdi. Github'daki şubelere göz atın :)
Flow

Düzenlenen yorumlar> hi all> xmpp istemcimi geliştirmek için asmack kullanıyorum, bir sorunla karşılaşıyorum> 1. girişten geldiğimde B kullanıcısıyla sohbet etmeye başladım ve B kullanıcısından mesajlar alıyorum, bu da iyi. benim wifi ve tekrar açın sonra programlı benim jabber sunucumu yeniden bağlanma ve tekrar hesabımı giriş, yeniden bağlandıktan sonra Ben kullanıcı B mesaj gönderme güzel ama kullanıcı B bana yanımda mesaj almayan mesajlar gönderirken. neyin yanlış olduğunu biliyorum. plz guide
aftab

Merhaba Flow> mevcut asmack'i en son şaplak ile nasıl birleştirebiliriz? ya da son smack ile asmack indirebilirsiniz nereden kullanılabilir?
aftab

@aftab olarak cevabım, belirtilen asmack ve kullanılan şaplak şube github bulunabilir. Github'daki README'leri okuduğunuzdan emin olun.
Akış


6

Son zamanlarda başka bir açık kaynak çözümüne rastladım: rastladım jaxmpp2

jaxmpp2 ayrıca Android'i (ve Java SE) de hedefler. Bununla ilgili başka bir şey söyleyemem, çünkü Android / XMPP projelerimde jaxmpp2 kullanmıyorum. Ama aSmack'e geçerli bir alternatif gibi görünüyor .


1
lütfen başlamak için herhangi bir yolu tarif edebilir, şaplak kütüphane .... bu benim için tamamen yeni. lütfen normal blog sahibi kişilerin bu kütüphaneyi düzgün bir şekilde anlayabilecekleri bir blog veya biraz libaray_project yapın.
Tushar Pandey

Developer.samsung.com/android/technical-docs/… üzerinde özellikle iyi olan bir öğretici buldum , uyumluluk nedenlerinden dolayı küçük değişiklikler yapılması gerektiğini unutmayın: stackoverflow.com/questions/23506658/begginer-asmack-error
realjin

3

Android için qsmack kullan

https://code.google.com/p/qsmack/downloads/list

Android için en son sürüm

Bire bir sohbet, grup sohbeti, video aktarımı, ses aktarımı, son görülme, kayıt numarasını değiştirme ... neredeyse whats uygulamasını tamamladım. Açık ateşte çok sayıda eklenti oluşturdum


@jaspreet ..... hangisini aSmack / qSmack kullanacak.
Tushar Pandey

@jaspreet ... qsamck'i android'e entegre etmek için herhangi bir kütüphane roject
Tushar Pandey

Hepsi Çinli ve yardım yok.
AZ_


bana bildirin Eğer herhangi bir sorunla karşılaşırsanız
Jaspreet Chhabra

3

Libstrophe ve jni kullanmak istiyorum. Bunu kullanmanın hedefleri çapraz platform, kullanımı kolay ve performanstır. libstrophe c ile yazılmıştır, bu nedenle bağımlılık sadece openssl ve expat lib olduğundan android makefile yazmak kolaydır. Benim durumumda, zaten android ve ios bağlantı noktası olan libjingle openssl ve expat lib kullanıyorum. (Sadece gyp dosyasını android makefile veya IOS projesine taşımanız gerekir).

Aşağıda android makefile'ım



    LOCAL_PATH:= $(call my-dir)/../../libstrophe-0.8.7

    SSL_PROJECT_PATH := openssl/libs/android

    include $(CLEAR_VARS)

    LOCAL_MODULE := openssl

    OPENSSL_LIB_NAME := lib$(LOCAL_MODULE).a

    LOCAL_CFLAGS := -DL_ENDIAN \
        -DOPENSSL_THREADS \
        -DPURIFY \
        -DTERMIO \
        -D_REENTRANT \
        -DOPENSSL_NO_HW \
        -DOPENSSL_NO_GOST \
        -DOPENSSL_NO_DTLS1 \
        -DOPENSSL_NO_RDRAND \
        -DOPENSSL_NO_RSAX \
        -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing -mfpu=neon -mfloat-abi=softfp


    OPENSSL_PATH := openssl/openssl
    OPENSSL_PATH_INC := $(LOCAL_PATH)/openssl/openssl

    LOCAL_C_INCLUDES := \
        $(OPENSSL_PATH_INC) \
        $(OPENSSL_PATH_INC)/include \
        $(OPENSSL_PATH_INC)/crypto \
        $(OPENSSL_PATH_INC)/crypto/asn1 \
        $(OPENSSL_PATH_INC)/crypto/evp \
        $(OPENSSL_PATH_INC)/crypto/modes \
        $(LOCAL_PATH)/openssl/config/android \
        $(LOCAL_PATH)/openssl

    LOCAL_ARM_MODE := arm
    LOCAL_CFLAGS += $(LOCAL_C_INCLUDES:%=-I%) -O3 -DANDROID_NDK


    LOCAL_SRC_FILES := \
        // here is openssl file which is defined in gyp

    LOCAL_SHORT_COMMANDS := true

    include $(BUILD_SHARED_LIBRARY)


    include $(CLEAR_VARS)

    STROPHE_PATH := $(LOCAL_PATH)
    EXPAT := expat-2.1.0
    OPENSSL_PATH := openssl/openssl
    OPENSSL_PATH_INC := $(LOCAL_PATH)/openssl/openssl


    EXPAT_SRC_FILES := \
        $(EXPAT)/lib/xmlparse.c \
        $(EXPAT)/lib/xmlrole.c \
        $(EXPAT)/lib/xmltok.c

    COMMON_CFLAGS := \
        -Wall \
        -Wmissing-prototypes -Wstrict-prototypes \
        -Wno-unused-parameter -Wno-missing-field-initializers \
        -fexceptions \
        -DHAVE_EXPAT_CONFIG_H \
        -DLOGGING -DANDROID \



    COMMON_C_INCLUDES += \
        $(LOCAL_PATH)/$(EXPAT)/lib \
        $(STROPHE_PATH) \
        $(STROPHE_PATH)/src \
        $(OPENSSL_PATH_INC) \
        $(OPENSSL_PATH_INC)/include \
        $(OPENSSL_PATH_INC)/crypto \
        $(OPENSSL_PATH_INC)/crypto/asn1 \
        $(OPENSSL_PATH_INC)/crypto/evp \
        $(OPENSSL_PATH_INC)/crypto/modes \
        $(LOCAL_PATH)/openssl/config/android \
        $(LOCAL_PATH)/openssl \
        ../android/jni


    STROPHE_SRC_FILES := src/auth.c \
        src/conn.c \
        src/ctx.c \
        src/event.c \
        src/handler.c \
        src/hash.c \
        src/jid.c \
        src/md5.c \
        src/sasl.c \
        src/scram.c \
        src/sha1.c \
        src/snprintf.c \
        src/sock.c \
        src/stanza.c \
        src/thread.c \
        src/tls_openssl.c \
        src/util.c \
        src/parser_expat.c \
        src/message.c \
        src/presence.c \
        src/roster.c


    JNI_SRC_FILES := ../android/jni/strophe-jni.c

    ifeq ($(TARGET_ARCH),arm)
        LOCAL_SDK_VERSION := 8
    else
        LOCAL_SDK_VERSION := 9
    endif

    LOCAL_ARM_MODE := arm
    LOCAL_SHORT_COMMANDS := true
    LOCAL_SYSTEM_SHARED_LIBRARIES := libc
    LOCAL_SHARED_LIBRARIES := openssl

    LOCAL_SRC_FILES := $(EXPAT_SRC_FILES)
    LOCAL_SRC_FILES += $(STROPHE_SRC_FILES)
    LOCAL_SRC_FILES += $(JNI_SRC_FILES)

    LOCAL_CFLAGS += $(COMMON_CFLAGS)
    LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
    LOCAL_CFLAGS += $(LOCAL_C_INCLUDES:%=-I%) -O3 -DANDROID_NDK
    LOCAL_C_INCLUDES += $(COMMON_C_INCLUDES)


    LOCAL_MODULE:= libnativeclient
    LOCAL_MODULE_TAGS := optional

    include $(BUILD_SHARED_LIBRARY)




0

Smack 4.1 Benioku ve Yükseltme Kılavuzunu Kullanma

Android studio 2.3'ü kullanarak, Son zamanlarda çok basit bir şekilde bir demo uyguladım.

-> Sadece aşağıdaki gibi uygulama düzeyinde gradle'da gradle bağımlılığı ekleyin

compile "org.igniterealtime.smack:smack-tcp:4.1.0"

// Optional for XMPPTCPConnection

compile "org.igniterealtime.smack:smack-android-extensions:4.1.0"

-> Bağlantı Yapılandırmasını Yapılandırma
NOT : Bunu AsyncTask veya başka bir arka plan iş parçacığında arayın

 XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                    .setUsernameAndPassword("Your Username here", "Your Password here")
                    .setHost("Host name here")
                    .setServiceName("Your service name here")
                    .setPort(Your port number here)
                    .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) //Disable or enable as per development mode
                    .setDebuggerEnabled(true) // to view what's happening in detail
                    .build();

-> Kullanın isConnected()ve isAuthenticated()

-> ChatManagerEklemek için kullanın chatListener.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.