Quelle bibliothèque XMPP serait le meilleur choix de nos jours pour le développement Android?
J'utilise la BIBLIOTHÈQUE SMACK CORRIGÉE telle qu'elle est suggérée dans de nombreuses autres questionsici à SO. Cependant, il s'agit d'une version corrigée de L'API Smack d'il y a deux ans. Et Bien que cela fonctionne généralement bien, j’explore d’autres options plus récentes
Je me suis penché sur la API OFFICIELLE SMACK API et après une petite recherche , Il semble que cela pourrait fonctionner simplement Bien de nos jours (bien que ce ne soit pas le cas .__ essayé encore dans une application réelle).
Il y a aussi une autre solution par laquelle je suis venu , LA BIBLIOTHÈQUE ASMACK DE BEEM . Beem est un client XMPP assez récent pourAndroid et d'après ce que je comprends. en utilisant leur propre version corrigée de aSMACK.
Enfin, il y a ASMACK mais cela N'a pas non plus été mis à jour depuis un certain temps (comme le site le suggère).
Avez-vous d'autres suggestions ou pouvez-vous expliquer pourquoi je devrais choisir l'une des solutions ci-dessus?
Smack est une bibliothèque de client XMPP à source ouverte. Depuis la version 4.1, il tourne nativement sur Android. Pour plus d'informations, consultez le "Smack 4.1 Readme" et la page du projet Smack sur Ignite Realtime . aSmack est obsolète et obsolète en faveur de Smack 4.1.
Je voudrais utiliser libstrophe et jni. Les objectifs à utiliser sont multiplateformes, simples à utiliser et performants . Libstrophe est écrit en c, il est donc facile d’écrire le fichier makefile sous Android puisque la dépendance n’est que openssl et expat lib. Dans mon cas, j'utilise openssl et expat lib de libjingle, qui sont déjà compatibles avec Android et iOS. (Il suffit de porter le fichier gyp dans un fichier Makefile ou un projet IOS Android).
Ci-dessous mon makefile Android
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)
Utiliser qsmack pour Android
https://code.google.com/p/qsmack/downloads/list
C'est la dernière version pour Android
J'ai travaillé sur une discussion en tête à tête, une discussion en groupe, un transfert vidéo, un transfert audio, la dernière visite, un numéro d'enregistrement modifié ... ce qui est presque complet. J'ai créé beaucoup de plugins sur openfire
Vous pouvez utiliser Bibliothèque client Tigase JaXMPP - il est très polyvalent et peut être utilisé à la fois pour les applications JavaSE et pour votre développement Android. Il est activement développé et Tigase Messenger pour Android ( Play Store ) est basé sur celui-ci.
Il existe une Documentation de base sur la bibliothèque wiki page avec quelques exemples et pour plus de détails, vous devriez vous référer à javadocs
Utilisation de Guide de lecture et de mise à jour de Smack 4.1
En utilisant Android studio 2.3, Récemment, j'ai implémenté une démonstration d'une manière très simple.
-> Il suffit d'ajouter une dépendance de niveau dans le niveau d'application 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 configuration de la connexion
NOTE: Appelle cela en AsyncTask ou dans un autre thread
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();
-> Utiliser isConnected()
et isAuthenticated()
-> Utilisez ChatManager
pour ajouter chatListener
.
Vous pouvez utiliser QuickBlox1 gratuitement.
Il fournit au serveur XMPP prêt à l'emploi de nombreuses fonctionnalités. Vous pouvez en savoir plus sur les fonctionnalités ici http://quickblox.com/developers/Chat
Voici un exemple d'utilisation de QuickBlox avec une bibliothèque Samm http://quickblox.com/developers/Android_XMPP_Chat_Sample