【问题标题】:simple smack jabber program taking very long to connect on android简单的 smack jabber 程序需要很长时间才能在 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();

【问题讨论】:

    标签: java android smack


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多