如今,哪个XMPP库将是Android开发的最佳选择?
我一直在使用修补过的Smack库,如
中所述许多其他问题
在这里。但是,这是两年前Smack API的补丁版本。并且
虽然通常都能很好地工作,但我正在探索其他任何最新的选项。
我一直在研究官方的
Smack API,很少
进行研究,看来它现在可能工作得很好
(尽管我还没有
在实际的应用程序中对其进行过尝试)。
我还有另外一个解决方案
跨过Beem的aSMACK库。
Beem是一个相当新的XMPP客户端,用于
他们正在使用自己的补丁版aSMACK。
最后,有一个SMACK,但是
还没有很久没有更新(如网站所建议的那样)。
您还有其他建议还是可以解释?为什么我要选择其余的一种?
#1 楼
SmackSmack是开放源代码XMPP客户端库。从4.1版开始,它可以在Android上本地运行。有关更多信息,请查看“ Smack 4.3自述文件”,并在Ignite Realtime上查看Smack项目页面。
评论
将Smack 3.2.0合并为asmack。查看github上的分支:)
–流程
2011年6月14日18:20
编辑的评论>大家好>我正在使用asmack开发我的xmpp客户端,我遇到了一个问题>当我第一次登录时,我开始与用户B聊天并从用户B接收消息也很好。我关闭我的wifi并再次打开它,然后以编程方式重新连接我的jabber服务器,然后再次登录我的帐户,重新连接后,我正在向用户B发送消息,这很好,但是当用户B向我发送消息时,我这一边的消息没有收到。我没有知道it.plz有什么问题
–aftab
2012年6月28日13:32
您好Flow>我们如何将现有的asmack与最新的smack合并?还是availabel从哪里可以下载具有最新smack的asmack?
–aftab
2012年8月15日16:28
@aftab如我的回答所述,可以在github上找到asmack和使用的smack分支。确保阅读github上的自述文件。
–流程
2012年8月15日在16:32
@J_K github.com/meisterfuu/SmackAndroidDemo
– Alexey
15年2月16日在10:25
#2 楼
最近,我偶然发现了另一个开源解决方案:jaxmpp2jaxmpp2也针对Android(和Java SE)。我真的不能说别的什么,因为我不在Android / XMPP项目中使用jaxmpp2。但这似乎是aSmack的有效替代方案。
评论
您能描述一下smack库开始的任何方式吗?。这对我来说是全新的。请建立一个博客或一些libaray_project,有头脑的人可以正确理解这个库。
–图莎·潘迪(Tushar Pandey)
14年6月19日在7:33
我在developer.samsung.com/android/technical-docs/…上找到了一个教程,它特别好,请注意,由于兼容性原因,需要进行一些小的修改:stackoverflow.com/questions/23506658/begginer-asmack-error
– Realjin
2014年8月3日在13:02
#3 楼
使用适用于Android的qsmackhttps://code.google.com/p/qsmack/downloads/list
它是适用于Android的最新版本
>我从事一对一聊天,群组聊天,视频传输,音频传输,最后一次看到,更改注册号...几乎完成了什么应用程序。我在openfire上创建了很多插件
评论
@jaspreet .....使用aSmack / qSmack的哪一个。
–图莎·潘迪(Tushar Pandey)
14年6月16日在9:38
@jaspreet ...用于在Android中集成smack的任何库项目
–图莎·潘迪(Tushar Pandey)
14年6月16日在10:05
全部是中文,没有可用的帮助。
– AZ_
2014年9月16日下午5:59
dropbox.com/s/dnc9nule3hjh08f/qsmack.zip?dl=0
–贾斯普雷特·查布拉(Jaspreet Chhabra)
2014-09-16 17:29
让我知道如果您遇到任何问题
–贾斯普雷特·查布拉(Jaspreet Chhabra)
2014-09-16 17:29
#4 楼
我想使用libstrophe和jni。使用它的目标是跨平台,易于使用和性能。libstrophe用c编写,由于依赖项仅是openssl和expat lib,因此很容易编写android makefile。就我而言,我正在使用libsingle中的openssl和expat lib,这些端口已经移植到android和ios。 (只需将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)
#5 楼
您可以使用Tigase JaXMPP客户端库-它非常通用,可以将其用于JavaSE应用程序和Android开发。它是积极开发的,基于Android的Tigase Messenger(Play商店)基于它。有一个基本库文档Wiki页面,其中包含一些示例,有关详细信息,请参考javadocs
。
#6 楼
使用Smack 4.1自述文件和升级指南使用Android Studio 2.3,最近我以一种非常简单的方式实现了一个演示。
->只需在应用程序级别gradle中添加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
。评论
任何想法如何与FCM XMPP一起使用?
–因为因为_im_batman
10月3日,8:11
#7 楼
您可以免费使用QuickBlox1。它为XMPP服务器提供了现成的功能,您可以在http://quickblox.com/developers/Chat
这里是一个示例,介绍如何将QuickBlox与aSmack库一起使用http://quickblox.com/developers/Android_XMPP_Chat_Sample
评论
你到底怎么了?我正在尝试决定是否使用官方贴票?只是ping /便笺,我已重新打开此按钮,以便使用导致关闭此按钮的重复操作。
我认为结束这个问题是一个大错误。在谈到“如何在Android上使用XMPP?”这个问题时,我可以说这是唯一可靠且最新的资源。在整个网络上。通过关闭它,您可以从SO中获得高质量的价值。该问题开放了一年多,没有出现任何问题,并且与指向该问题的重复项一样,在相同的地方问了同样的问题。我什至看不到关闭它的意义是“非建设性的”:它基于现实世界的问题,涉及事实和参考。另请参见upvote和收藏夹计数。
@casperOne感谢您耐心的解释。它可以帮助我了解stackoverflow的问题所在。也许我会在meta上提到这一点,但是似乎这是大多数人的意见,并且已经讨论了很多次。只是感觉不对,特别是因为它多年来没有被投票关闭。
除了需要“如何在android中使用XMPP”之外,“ Flow”和“ casperOne”之间的讨论更加有趣。我在互联网上徘徊了xmpp,今天结束时我在这里发表了这篇文章,该文章为我提供了即使在OP的两年后,也可以用于XMPP的库的更多具体信息,对我来说绝对具有建设性,并且将成百上千聊天应用程序的新手。 “ EVENTS”比“ RULES”更能说明“ FLOW'S”观点在此问题的解决上是正确的。