Android и XMPP: в настоящее время доступные решения [закрыто
Вопрос
Какая библиотека XMPP будет лучшим выбором в настоящее время для разработки Android?
Я использовал Заплаченная библиотека Smack Как предлагается во многих других вопросах здесь. Тем не менее, это исправленная версия Smack API двух лет назад. И хотя это обычно работает хорошо, я изучаю любые другие, более поздние варианты.
Я смотрел на Официальный Smack API И после небольшого исследования, кажется, в настоящее время это может сработать (хотя я еще не пробовал это в реальном приложении).
Есть также еще одно решение, с которым я столкнулся, Библиотека Beem AsmackАнкет Beem является довольно новым клиентом XMPP для Android, и из того, что я понимаю, они используют свою собственную исправленную версию Asmack.
Наконец, есть Асмак Но это тоже не обновлялось в течение довольно долгого времени (как предполагает сайт).
Есть ли у вас какие -либо другие предложения или вы можете объяснить, почему я должен выбрать одно из вышеперечисленных в остальном?
Решение
Хлопать
Smack-это клиентская библиотека XMPP с открытым исходным кодом. Поскольку версия 4.1 работает изначально на Android. Для получения дополнительной информации посмотрите на "Smack 4.1 Readme" и посмотреть Smack Project Page в Ignite Realtime. Анкет Asmack устарел и устарел в пользу Smack 4.1.
Другие советы
Используйте QSmack для Android
https://code.google.com/p/qsmack/downloads/list
Это последняя сборка для Android
Я работал над одним на один чат, групповой чат, передача видео, передача звука, последний вид, изменение регистрационного номера ... Почти заполнить приложение Whats. Я создал много плагинов на OpenFire
Я хотел бы использовать либстрофе и JNI. Цели для использования - кросс -платформ, простой в использовании и производительность. Либстроф написан в C, поэтому его легко писать Android Makefile, так как зависимость только OpenSSL и Expat Lib. В моем случае я использую OpenSSL и эксплуатируйте Lib из Libjingle, который уже порта в Android и iOS. (Просто нужно перенести файл GYP в Android Makefile или IOS Project).
Ниже мой 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. Он активно развивается и Tigase Messenger для Android (Магазин игр) основан на этом.
Eсть Основная библиотечная документация Страница вики с парой примеров и для подробностей, которые вы должны судить Javadocs
С использованием Smack 4.1 Readme и Руководство по обновлению
Используя Android Studio 2.3, недавно я внедрил демонстрацию очень простым способом.
-> Просто добавьте зависимость Gradle в уровень приложений, как показано ниже
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
Вот пример, как начать использовать QuickBlox с библиотекой ASMACK http://quickblox.com/developers/android_xmpp_chat_sample