Android и XMPP: в настоящее время доступные решения [закрыто

StackOverflow https://stackoverflow.com/questions/4769020

  •  16-10-2019
  •  | 
  •  

Вопрос

Какая библиотека 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.

Другие советы

Недавно я наткнулся на другое решение с открытым исходным кодом: JAXMPP2

JAXMPP2 также нацелен на Android (и Java SE). Я не могу ничего сказать об этом, потому что я не использую JAXMPP2 в своих проектах Android/XMPP. Но это похоже на действительную альтернативу Асмак.

Используйте 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top