Android和XMPP:目前可用的解决scheme

现在哪个XMPP库是Android开发的最佳select?

你有什么其他的build议,或者你能解释为什么我应该select其中的一个吗?

  • 有没有为python实现的WebSocket客户端?
  • XMPP的好教程?
  • PHP - SSL证书错误:无法获取本地颁发者证书
  • 良好的XMPP Java库的服务器端?
  • 通过Facebook发送消息聊天API(XMPP)C#
  • 低延迟,大规模的消息队列
  • XMPP与支持X-FACEBOOK-PLATFORM的Java Asmack库
  • 最好的python XMPP / Jabber客户端库?
  • 6 Solutions collect form web for “Android和XMPP:目前可用的解决scheme”

    拍击

    Smack是一个开源的XMPP客户端库。 从版本4.1开始,它在Android上运行。 有关更多信息,请参阅“Smack 4.1自述文件”,并参阅Ignite Realtime中的Smack项目页面 。 aSmack已经过时,并且弃用Smack 4.1。

    我最近偶然发现了另一个开源解决scheme: jaxmpp2

    jaxmpp2也针对Android(和Java SE)。 我真的不能说任何其他的东西,因为我不在我的Android / XMPP项目中使用jaxmpp2。 但它看起来像一个有效的替代aSmack 。

    使用qsmack for android

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

    它是Android的最新版本

    我曾经一对一聊天,群聊,video传输,audio传输,上次看到,更改注册号码…几乎完成什么应用程序。 我在openfire上创build了很多插件

    我想用libstrophe和jni。 目标使用这是跨平台,简单的使用和性能。 libstrophe是用c编写的,所以很容易编写android makefile,因为依赖关系只有openssl和expat lib。 在我的情况下,我使用libjingle的openssl和expat lib已经端口到Android和IOS。 (只需要将gyp文件移植到android makefile或IOS项目中)。

    下面是我的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) 

    使用Smack 4.1自述和升级指南

    使用Android studio 2.3,最近我以非常简单的方式实现了一个演示。

    – >只需在应用程序级别gradle中添加gradle dependency,如下所示

     compile "org.igniterealtime.smack:smack-tcp:4.1.0" // Optional for XMPPTCPConnection compile "org.igniterealtime.smack:smack-android-extensions:4.1.0" 

    – >configuration连接configuration
    注意 :在AsyncTask或其他后台线程中调用

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

    – >使用isConnected()isAuthenticated()

    – >使用ChatManager添加chatListener

    您可以免费使用QuickBlox1。

    它提供了许多function的开箱即用的XMPP服务器,您可以阅读有关functionhttp://quickblox.com/developers/Chat

    下面是一个如何开始使用QuickBlox和aSmack库的例子http://quickblox.com/developers/Android_XMPP_Chat_Sample