最近のAndroid開発に最適なXMPPライブラリはどれですか?
SOの他の多くの質問で提案されているように、パッチされたSmackライブラリを使用しています。ただし、これは2年前のSmack APIのパッチバージョンです。そして、それは一般にうまく機能しますが、私は他の、より最近のオプションを探しています。
私は公式のSmack APIを見てきましたが、少し調べてみると、今日はうまくいくかもしれません(実際のアプリケーションではまだ試していませんが)。
私が出会った別の解決策もあります、BeemのaSMACKライブラリ。 BeemはAndroid用のかなり新しいXMPPクライアントであり、私が理解したところによると、彼らは独自のパッチを適用したバージョンのaSMACKを使用しています。
最後に、aSMACKがありますが、それもかなり長い間更新されていません(サイトが示唆しているように)。
他に何か提案がありますか、それともなぜ上記のいずれかを選択する必要があるのかを説明できますか?
Smackは、オープンソースのXMPPクライアントライブラリです。バージョン4.1以降、Androidでネイティブに実行されます。詳細については、 "Smack 4.1 Readme" をご覧ください。 Ignite RealtimeのSmackプロジェクトページ をご覧ください。 aSmackは廃止され、Smack 4.1を支持して廃止されました。
Libstropheとjniを使用したいと思います。これを使用する目的は、クロスプラットフォームで、使いやすく、パフォーマンスが高いことです。 libstropheはcで記述されているため、依存関係はopensslとexpat libのみであるため、Android makefileを簡単に記述できます。私の場合、opensslを使用し、libjingleから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)
Androidでqsmackを使用する
https://code.google.com/p/qsmack/downloads/list
Android向けの最新ビルド
私は1対1のチャット、グループチャット、ビデオ転送、オーディオ転送、最後に見た登録番号の変更など、ほとんどすべてのアプリを完成させました。 OpenFireで多くのプラグインを作成しました
Tigase JaXMPPクライアントライブラリ を使用できます。非常に用途が広く、JavaSEアプリケーションとAndroid開発の両方に使用できます。これは積極的に開発されており、 Android用Tigase Messenger ( Playストア )はそれに基づいています。
基本的なライブラリドキュメント wikiページがあり、いくつかの例があります。詳細については javadocs を参照してください。
Smack 4.1 Readme and Upgrade Guide の使用
Android studio 2.3を使用して、最近、非常に簡単な方法でデモを実装しました。
->以下のように、アプリレベルgradleにgradle依存関係を追加するだけです
compile "org.igniterealtime.smack:smack-tcp:4.1.0"
// Optional for XMPPTCPConnection
compile "org.igniterealtime.smack:smack-Android-extensions:4.1.0"
->接続構成の構成
NOTE:これを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は無料で使用できます。
XMPPサーバーに多くの機能を提供します。そこの機能について読むことができます http://quickblox.com/developers/Chat
次に、aSmackライブラリーでQuickBloxの使用を開始する方法の例を示します http://quickblox.com/developers/Android_XMPP_Chat_Sample