Android और XMPP: वर्तमान में उपलब्ध समाधान [बंद]


165

एंड्रॉइड डेवलपमेंट के लिए आजकल कौन सी XMPP लाइब्रेरी बेस्ट चॉइस होगी?

  • मैं पैच स्मैक लाइब्रेरी का उपयोग कर रहा हूं जैसा कि एसओ में यहां कई अन्य प्रश्नों में सुझाया गया है। हालाँकि, यह दो साल पहले से स्मैक एपीआई का एक पैच संस्करण है। और यद्यपि यह आम तौर पर अच्छी तरह से काम करता है मैं किसी अन्य, अधिक हाल के विकल्पों की खोज कर रहा हूं।

  • मैं आधिकारिक स्मैक एपीआई को देख रहा हूं और थोड़ा शोध करने के बाद, ऐसा लगता है कि यह आजकल ठीक काम कर सकता है (हालांकि मैंने इसे वास्तविक अनुप्रयोग में अभी तक कोशिश नहीं की है)।

  • वहाँ भी एक और समाधान मैं भर में आया है, Beem aSMACK पुस्तकालय । Beem एंड्रॉइड के लिए एक काफी नया XMPP क्लाइंट है और जो मैं समझता हूं कि वे ASMACK के अपने स्वयं के पैच किए गए संस्करण का उपयोग कर रहे हैं।

  • अंत में, ASMACK है, लेकिन वह भी काफी समय से अपडेट नहीं किया गया है (जैसा कि साइट से पता चलता है)।

क्या आपके पास कोई अन्य सुझाव है या क्या आप बता सकते हैं कि मुझे बाकी में से एक का चयन क्यों करना चाहिए?


2
अंत में आप किसके साथ गए थे? मैं यह तय करने की कोशिश कर रहा हूं कि आधिकारिक स्मैक का उपयोग करना है या नहीं?
टॉम

2
बस एक पिंग / नोट, मैंने इसे डुप्लिकेट के पक्ष में फिर से खोला है जिससे यह बंद हो गया है।
टिम पोस्ट

80
मुझे लगता है कि इस सवाल को बंद करना एक बड़ी गलती है । एंड्रॉइड पर एक्सएमपीपी में शामिल होने के नाते मैं बता सकता हूं कि यह एकमात्र विश्वसनीय और अप टू डेट संसाधन है जब यह सवाल आता है कि "मैं एंड्रॉइड पर एक्सएमपीपी का उपयोग कैसे कर सकता हूं?" पूरे नेट पर। इसे बंद करके, आप SO से उच्च गुणवत्ता वाला मान लेते हैं। यह समस्या और प्रश्नों के बिना प्रश्न एक वर्ष से अधिक समय तक खुला रहा, जिसमें वही पूछा गया जो इस प्रश्न की ओर इशारा करते हुए डुप्लिकेट के रूप में बंद हुआ था। मैं इसे "रचनात्मक नहीं" के रूप में बंद करने की बात भी नहीं देखता: यह वास्तविक दुनिया की समस्या पर आधारित है, इसमें तथ्य और संदर्भ शामिल हैं। अपवोट और फ़ेव काउंट भी देखें।
प्रवाह

4
@casperOne अपने रोगी स्पष्टीकरण के लिए धन्यवाद। यह मुझे समझने में मदद करता है कि स्टैकओवरफ्लो के साथ समस्या कहां है। शायद मैं इसे मेटा पर लाऊंगा, लेकिन ऐसा लगता है कि यह बहुमत की राय है और पहले ही कई बार चर्चा की गई थी। यह सिर्फ सही नहीं लगता है, खासकर क्योंकि यह सालों से वोटों से बंद नहीं हुआ था।
प्रवाह

4
"एंड्रॉइड में एक्सएमपीपी का उपयोग कैसे करें" के लिए मेरी आवश्यकता के अलावा "फ्लो" और "कैस्परऑन" के बीच की चर्चा अधिक दिलचस्प है। मैं xmpp के लिए इंटरनेट पर भटक गया और दिन के अंत में मैं इस पद पर हूं जो मुझे पुस्तकालयों के बारे में अधिक विशिष्ट जानकारी प्रदान कर रहा है जो मैं ओपी के दो साल के बाद भी एक्सएमपीपी के लिए उपयोग कर सकता हूं, निश्चित रूप से मेरे लिए रचनात्मक है और सैकड़ों के लिए होगा चैट ऐप्स के लिए नौसिखिया की। "प्रश्न" "नियम" से अधिक बोलता है कि इस प्रश्न को बंद करने पर "प्रवाह" का दृष्टिकोण सही है।
पंकज

जवाबों:


106

एक प्रकार का जहाज़

स्मैक एक ओपन-सोर्स XMPP क्लाइंट लाइब्रेरी है। संस्करण 4.1 के बाद से यह मूल रूप से एंड्रॉइड पर चलता है। अधिक जानकारी के लिए "स्मैक 4.3 रीडमे" पर एक नज़र डालें और इग्नाइट रियलटाइम पर स्मैक प्रोजेक्ट पेज देखें ।


8
स्मैक 3.2.0 को स्मैक में मिलाया। जीथब पर शाखाओं की जाँच करें :)
प्रवाह करें

संपादित टिप्पणियां> हाय सब> मैं अपने xmpp क्लाइंट को विकसित करने के लिए asmack का उपयोग कर रहा हूं, मैं एक समस्या का सामना कर रहा हूं> जब मैं पहली बार लॉगिन से आता हूं तो मैं उपयोगकर्ता B के साथ अपनी चैटिंग शुरू करता हूं और उपयोगकर्ता B से संदेश प्राप्त करता हूं जो भी ठीक है। मैं स्विच बंद कर देता हूं मेरी wifi और उस पर फिर से स्विच करें, फिर प्रोग्रामेटिक रूप से मेरे jabber सर्वर को फिर से कनेक्ट करें और फिर से अपना अकाउंट लॉगिन करें, फिर से कनेक्ट करने के बाद मैं उपयोगकर्ता B को संदेश भेज रहा हूं जो ठीक है लेकिन जब उपयोगकर्ता B मुझे संदेश भेज रहा है जो मेरी तरफ से संदेश नहीं प्राप्त कर रहा है। पता है कि इसके साथ क्या गलत है। गाइड गाइड
आफताब

हाय फ्लो> हम मौजूदा स्मैक को नवीनतम स्मैक के साथ कैसे मर्ज कर सकते हैं? या यह है कि मैं नवीनतम स्मैक के साथ asmack डाउनलोड कर सकते हैं
आफताब

@aftab जैसा कि मेरे उत्तर में कहा गया है, asmack और इस्तेमाल की गई स्मैक शाखा को जीथब पर पाया जा सकता है। README के ​​गितुब को अवश्य पढ़ें।
प्रवाह करें


6

मैं हाल ही में एक और ओपन-सोर्स समाधान में ठोकर खाई: jaxmpp2

jaxmpp2 Android (और Java SE) को भी निशाना बनाता है। मैं वास्तव में इसके बारे में और कुछ नहीं कह सकता, क्योंकि मैं अपने एंड्रॉइड / एक्सएमपीपी प्रोजेक्ट्स में jaxmpp2 का उपयोग नहीं करता हूं। लेकिन यह aSmack के लिए एक वैध विकल्प जैसा दिखता है ।


1
क्या आप किसी भी तरह से, स्मैक लाइब्रेरी शुरू करने का वर्णन कर सकते हैं .... यह मेरे लिए बिल्कुल नया है। कृपया एक ब्लॉग या कुछ libaray_project बनाएं जो सामान्य दिमाग वाले लोग इस लाइब्रेरी को ठीक से समझ सकें।
तुषार पांडे

मुझे डेवलपर. samsung.com/android/technical-docs/… पर एक ट्यूटोरियल मिला , जो विशेष रूप से अच्छा है, ध्यान दें कि संगतता कारणों से कुछ छोटे संशोधन के लिए कॉल करता है: stackoverflow.com/questions/23506658/begirer-asmack-error
13-28

3

Android के लिए qsmack का उपयोग करें

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

यह Android के लिए नवीनतम बिल्ड है

मैंने एक से एक चैट, ग्रुप चैट, वीडियो ट्रांसफर, ऑडियो ट्रांसफर, आखिरी बार देखा, पंजीकरण नंबर बदल दिया है ... लगभग पूरा व्हाट्स ऐप। मैंने ओपनफायर पर बहुत सारे प्लगइन बनाए हैं


@ जसप्रीत ..... जो एक aSmack / qSmack का उपयोग करता है।
तुषार पांडे

@ जसप्रीत ... किसी भी लाइब्रेरी में एंड्रॉइड में क्यूसमेक को एकीकृत करने के लिए रूज
तुषार पांडे

यह सब चीनी है और कोई मदद उपलब्ध नहीं है।
AZ_


मुझे बताएं कि यदि आपको इसमें कोई समस्या
आती है

3

मैं लिबस्ट्रोपी और जानी का उपयोग करना चाहूंगा। इसका उपयोग करने के लिए लक्ष्य पार मंच, उपयोग करने के लिए सरल और प्रदर्शन है। libstrophe को c में लिखा जाता है, इसलिए android makefile को लिखना आसान है क्योंकि निर्भरता केवल Opensl और expat lib है। मेरे मामले में, मैं ओपनशेल का उपयोग कर रहा हूं और libjingle से एफएबीटी का उपयोग कर रहा हूं जो पहले से ही एंड्रॉइड और आईओएस पर पोर्ट करता है। (बस एंड्रॉइड मेकफिल या आईओएस प्रोजेक्ट के लिए जिप फाइल को पोर्ट करना होगा)।

नीचे मेरा 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)



1

आप टाइगस JaXMPP क्लाइंट लाइब्रेरी का उपयोग कर सकते हैं - यह बहुत बहुमुखी है और आप इसे जावा कोड के साथ-साथ एंड्रॉइड डेवलपमेंट दोनों के लिए उपयोग कर सकते हैं। यह सक्रिय रूप से विकसित है और एंड्रॉइड ( प्ले स्टोर ) के लिए टिगेज़ मैसेंजर इस पर आधारित है।

उदाहरणों के एक जोड़े के साथ एक बेसिक लाइब्रेरी डॉक्यूमेंटेशन विकी पेज है और विवरण के लिए आपको javadocs का संदर्भ देना चाहिए


0

स्मैक 4.1 रीडमी और अपग्रेड गाइड का उपयोग करना

एंड्रॉइड स्टूडियो 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


0

आप QuickBlox1 का उपयोग मुफ्त में कर सकते हैं।

यह एक्सएमपीपी सर्वर को बहुत सारी विशेषताओं के साथ बॉक्स से बाहर प्रदान करता है, आप वहाँ की विशेषताओं के बारे में पढ़ सकते हैं http://quickblox.com/developers/Chat

यहां एक उदाहरण दिया गया है कि क्विकब्लैक का उपयोग कैसे शुरू करें aSmack लाइब्रेरी के साथ http://quickblox.com/developers/Android_XMPP_Chat_Sample

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.