Frage

Welche XMPP -Bibliothek wäre heutzutage die beste Wahl für die Android -Entwicklung?

  • Ich habe das benutzt Patched Smack Library Wie in vielen anderen Fragen hier in SO vorgeschlagen. Dies ist jedoch eine gepatchte Version der Smack API vor zwei Jahren. Und obwohl es im Allgemeinen gut funktioniert, erforsche ich alle anderen, neueren Optionen.

  • Ich habe mir das angesehen Offizielle Smack API Und nach ein wenig Nachforschungen scheint es heutzutage gut zu funktionieren (obwohl ich es noch nicht in einer echten Anwendung ausprobiert habe).

  • Es gibt auch eine andere Lösung, auf die ich gestoßen bin. Beems Asmack -Bibliothek. Beem ist ein ziemlich neuer XMPP -Client für Android und soweit ich weiß, dass sie ihre eigene gepatchte Version von Asmack verwenden.

  • Schließlich gibt es Asmack Aber auch das wurde seit einiger Zeit nicht mehr aktualisiert (wie die Website schon sagt).

Haben Sie andere Vorschläge oder können Sie erklären, warum ich einen der oben genannten über den Rest auswählen sollte?

War es hilfreich?

Lösung

Klatschen

Smack ist eine Open-Source-XMPP-Client-Bibliothek. Seit Version 4.1 wird nativ auf Android ausgeführt. Weitere Informationen finden Sie in der "Smack 4.1 Readme" und sehen die Smack -Projektseite bei Ignite Echtzeit. AsmacC ist veraltet und veraltet zugunsten von Smack 4.1.

Andere Tipps

Ich bin kürzlich auf eine andere Open-Source-Lösung gestolpert: JAXMPP2

JAXMPP2 zielt auch auf Android (und Java SE) ab. Ich kann nichts anderes darüber sagen, weil ich JAXMPP2 in meinen Android/XMPP -Projekten nicht verwende. Aber es sieht aus wie eine gültige Alternative zu Asmack.

Verwenden Sie Qsmack für Android

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

Es ist der neueste Build für Android

Ich habe an eins zu einem Chat gearbeitet, Gruppenchat, Videoübertragung, Audioübertragung, zuletzt gesehen, die Registrierungsnummer ändern ... Fast vollständig Whats App. Ich habe viel Plugin auf OpenFire erstellt

Ich möchte Librophe und JNI verwenden. Ziele, dies zu verwenden, ist eine Cross -Plattform, einfach zu bedienen und Leistung. libstroph ist in c geschrieben, also ist es einfach, Android Makefile zu schreiben, da die Abhängigkeit nur OpenSSL und Expat Lib ist. In meinem Fall verwende ich OpenSSL und Expat Lib von Libjingle, die bereits auf Android und iOS portieren. (Ich muss nur die Gyp -Datei in Android Makefile oder iOS -Projekt portieren).

Unten ist mein 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)


Sie können verwenden Tigase Jaxmpp Client Library - Es ist sehr vielseitig und Sie können es sowohl für Javase -Anwendungen als auch für Ihre Android -Entwicklung verwenden. Es ist aktiv entwickelt und Tigase Messenger für Android (Spielladen) basiert darauf.

Da ist ein Grundlegende Bibliotheksdokumentation Wiki -Seite mit ein paar Beispielen und Details, denen Sie sich wenden sollten Javadocs

Verwendung Smack 4.1 Readme und Upgrade Guide

Mit Android Studio 2.3 habe ich kürzlich eine Demo auf sehr einfache Weise implementiert.

-> Fügen Sie einfach Gradle -Abhängigkeit in die App -Gradle -Ebene wie unten hinzu

compile "org.igniterealtime.smack:smack-tcp:4.1.0"

// Optional for XMPPTCPConnection

compile "org.igniterealtime.smack:smack-android-extensions:4.1.0"

-> Konfiguration der Verbindungskonfiguration
HINWEIS : Nennen Sie dies in Asynctask oder in einem anderen Hintergrund -Thread

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

-> Verwendung isConnected() und isAuthenticated()

-> Verwendung ChatManager für add chatListener.

Sie können QuickBlox1 kostenlos verwenden.

Es bietet XMPP -Server mit vielen Funktionen aus der Box. Sie können dort über Funktionen lesen http://quickblox.com/developers/chat

Hier finden Sie ein Beispiel, wie Sie QuickBlox mit Asmack Library verwenden können http://quickblox.com/developers/android_xmpp_chat_sample

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top