Android XMPP:現在利用可能な解決策[定休日]
質問
るXMPP図書館の現在のAndroidアプリ開発?
まとめ パッチに舌鼓 図書館 としては と多くの他の質問 こちらです。しかし、そのパッチ版 に舌鼓APIから二年前のこと。や ですが一般的にもっ 探その他、最近の オプション
って見る 公式 舌鼓API 後少し 研究では、まうのですが仕事だけで 細かねがない しかし現実のものとします。
も解った は、 BeemのaSMACK図書館.Beemはかなり新しいXMPPクライアント androidのかを理解してい を利用していることを自らのパッチ 版aSMACK.
最後に、あ aSMACK その もできていな更新が非常に 一部の時間のことを示唆).
いその他のご提案やその理由は何ですかだの一つ以上の?
解決
スマック
Smackは、オープンソースXMPPクライアントライブラリです。バージョン4.1以来、Androidでネイティブに実行されます。詳細については、をご覧ください 「スマック4.1 readme」 そして、を参照してください IGNITE REALTIMEのスマックプロジェクトページ. 。アスマックは時代遅れであり、Smack 4.1を支持して非難されています。
他のヒント
AndroidにQSMackを使用します
https://code.google.com/p/qsmack/downloads/list
Androidの最新のビルド
私は1対1のチャット、グループチャット、ビデオ転送、オーディオ転送、最後に見られた、登録番号の変更に取り組んできました...ほぼ完了したアプリ。 Openfireでたくさんのプラグインを作成しました
を使用したいのでlibstrophe、jni.目標の利用は、クロスプラットフォームに簡単に操作します。libstropheができるので、書きやすいのandroid makefileからの依存関係はopenssl、expat lib.私の場合は、私が使っているopenssl、expat libからlibjingleるポートにpc版のドットアヒルが出たり、.(必要なポート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)
使用できます Tigase jaxmppクライアントライブラリ - 非常に用途が広く、JavaseアプリケーションとAndroid開発の両方に使用できます。積極的に開発されています Android用のティガゼメッセンジャー (プレイストア)それに基づいています。
があります 基本的なライブラリのドキュメント いくつかの例があるwikiページと詳細については、審判する必要があります Javadocs
使用 Smack 4.1 ReadMeおよびアップグレードガイド
Android Studio 2.3を使用して、最近、非常に簡単な方法でデモを実装しました。
- >以下のようにアプリレベルのグレードルにグラードル依存関係を追加するだけです
compile "org.igniterealtime.smack:smack-tcp:4.1.0"
// Optional for XMPPTCPConnection
compile "org.igniterealtime.smack:smack-android-extensions:4.1.0"
- >接続構成を構成します
ノート :これを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