Android et XMPP: Actuellement solutions disponibles [fermé]
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?
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