Question

bibliothèque qui XMPP serait le meilleur choix aujourd'hui pour le développement Android?

  • Je l'ai utilisé href="http://davanum.wordpress.com/2008/12/29/updated-xmpp-client-for-android/"> patché Smack bibliothèque tout comme suggéré dans de nombreuses autres questions ici SO. Cependant, c'est une version patchée de l'API Smack il y a deux ans. Et même si cela fonctionne généralement bien je suis explorer tout autre, plus récente options.

  • Je l'ai regardé officiel Smack API et après un peu la recherche, il semble que cela pourrait fonctionner juste amende de nos jours (bien que je n'ai pas encore essayé dans une application réelle).

  • Il y a aussi une autre solution je suis à travers, bibliothèque aSMACK de Beem . Beem est un assez nouveau client XMPP pour android et de ce que je comprends ils utilisent leur propre patché version de aSMACK.

  • Enfin, il y a aSMACK mais aussi n'a pas été mis à jour pour tout un certain temps (comme le site l'indique).

Avez-vous d'autres suggestions ou pouvez-vous expliquer pourquoi je devrais choisir un des ci-dessus sur le reste?

Était-ce utile?

La solution

Smack

Smack est une bibliothèque client XMPP open source. Depuis la version 4.1, il fonctionne en mode natif sur Android. Pour plus d'informations consulter le « Smack 4.1 Readme » et voir le page du projet Smack à Ignite en temps réel . aSmack est obsolète et dépréciée en faveur de Smack 4.1.

Autres conseils

J'ai récemment trébuché à travers une autre solution open source: jaxmpp2

jaxmpp2 vise également les applications (et Java SE). Je ne peux pas vraiment dire quoi que ce soit d'autre à ce sujet, parce que je ne l'utilise jaxmpp2 dans mes projets Android / XMPP. Mais il ressemble à une alternative valable à aSmack .

Utilisez qsmack pour Android

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

Son la dernière version pour Android

J'ai travaillé à l'un chat en l'un, le chat de groupe, transfert vidéo, transfert audio, la dernière fois, le numéro d'enregistrement de changement ... ce qui est l'application presque complète. J'ai créé beaucoup de plugin sur openfire

Je voudrais utiliser libstrophe et JNI. Objectifs de l'utiliser est multi-plateforme, simple d'utilisation et de performance. libstrophe est écrit en C donc, il est facile d'écrire android makefile car la dépendance est seulement OpenSSL et expat lib. Dans mon cas, j'utilise OpenSSL et expat lib de libjingle qui déjà le port à Android et iOS. (Juste besoin de fichier gyp de port pour Android makefile ou projet IOS).

Voici mon Android makefile



    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)


Vous pouvez utiliser tigase JaXMPP Client Library - il est très polyvalent et vous pouvez l'utiliser pour les deux JavaSE applications, ainsi que vous le développement Android. Il est activement développé et tigase Messenger pour Android ( Jouer Store) est basé sur elle.

Il y a un Bibliothèque de documentation de base Page wiki avec quelques exemples et pour plus de détails vous devrait refere javadocs

Utilisation Smack 4.1 Readme et mise à niveau

Utilisation de studio Android 2.3, j'ai récemment mis en place une démo d'une manière très simple.

-> Just Add dépendance gradle au niveau de l'application gradle comme ci-dessous

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

// Optional for XMPPTCPConnection

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

-> Configurer la connexion de configuration
     NOTE : Appelez cela dans AsyncTask ou dans un autre thread d'arrière

 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();

-> Utilisez isConnected() et isAuthenticated()

-.> Utilisez ChatManager pour ajouter chatListener

Vous pouvez utiliser QuickBlox1 gratuitement.

Il fournit serveur XMPP hors de la boîte avec beaucoup de fonctionnalités, vous pouvez lire sur les fonctionnalités http: // quickblox.com/developers/Chat

Voici un exemple comment commencer à utiliser QuickBlox avec bibliothèque aSmack http://quickblox.com/developers/Android_XMPP_Chat_Sample

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top