简单的 smack jabber 程序需要很长时间才能在 android 上连接
Posted
技术标签:
【中文标题】简单的 smack jabber 程序需要很长时间才能在 android 上连接【英文标题】:simple smack jabber program taking very long to connect on android 【发布时间】:2018-12-12 14:06:10 【问题描述】:使用smack jabber library 4.3.1,我的android 程序需要84 秒才能连接,这相当长。我have seen a discussion in a forum 有类似的问题,但它影响了早期版本的 SMACK。
我做错了什么?
下面是代码用来连接的smack。
XMPPTCPConnectionConfiguration cc= XMPPTCPConnectionConfiguration.builder()
.setCompressionEnabled(true)
.setUsernameAndPassword("smackuser","ilovesmack")
.setXmppDomain("xmpp.jp")
.setSecurityMode(ConnectionConfiguration.SecurityMode.required)
.build();
connection=new XMPPTCPConnection(cc);
connection.addConnectionListener(MainActivity.this);
connection.connect();
connection.login();
【问题讨论】:
【参考方案1】:只需调用一次。例如在应用程序类中
AndroidSmackInitializer.initialize(Context);
在任何 XMPP 连接之前
[旧答案。请勿使用] 我发现了问题。 SMACK jabber 使用 minidns 和 minidns has a recently fixed bug on android 8。我通过使用下面的代码解决了这个问题。感谢@Flow
//////////////////////smack///////////////////////////////////////
implementation "org.igniterealtime.smack:smack-android-extensions:4.3.1"
implementation "org.igniterealtime.smack:smack-experimental:4.3.1"
implementation "org.igniterealtime.smack:smack-tcp:4.3.1"
implementation 'de.measite.minidns:minidns-hla:0.2.4'//added this
添加了 minidns 依赖
import org.minidns.dnsserverlookup.android21.AndroidUsingLinkProperties;
AndroidUsingLinkProperties.setup(context);//add this
cc=XMPPTCPConnectionConfiguration.builder()
.setCompressionEnabled(true)
.setUsernameAndPassword(username,password)
.setXmppDomain(domain)
.build();
xmpptcpConnection=new XMPPTCPConnection(cc);
xmpptcpConnection.addConnectionListener(this);
xmpptcpConnection.connect();
xmpptcpConnection.login();
【讨论】:
以上是关于简单的 smack jabber 程序需要很长时间才能在 android 上连接的主要内容,如果未能解决你的问题,请参考以下文章
hava jabber-bot。 XMPP over smack 4.2.0 with TLS