首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少脱机消息asmack (Android)

缺少脱机消息asmack (Android)
EN

Stack Overflow用户
提问于 2015-09-09 01:12:32
回答 3查看 921关注 0票数 2

我在openfire server.But中启用了脱机消息选项,我无法获取脱机消息

用户A在线,用户B在线,在这种情况下,我能够获得消息。

现在用户B关闭了他的WiFi(注意:用户A一直等到服务器中的用户B会话完全终止)

现在用户A向用户B发送一条消息

在这种情况下,我可以在openfire离线表中看到消息。

现在用户B再次联机,当服务器知道用户B在线时,服务器将消息发送给用户B(消息从脱机消息表中消失)。

但是用户B不会收到该消息。

代码语言:javascript
复制
connection.login(userName, userPwd,  UiUtility.getMyPhoneNO());
PacketFilter filter = new PacketTypeFilter(org.jivesoftware.smack.packet.Message.class);
packetListener =new PacketListener() {
public void processPacket(Packet packet) {
Message message = (Message) packet;


if (message.getBody() != null) {
  String fromName = StringUtils.parseBareAddress(message
  .getFrom());
  Log.i("XMPPClient", "Got text [" + message.getBody()
  + "] from [" + fromName + "]");
   }
  }
  };
   connection.addPacketListener(packetListener, filter);

再次成功登录后,我可以聊天normally.But我想知道为什么那些脱机消息丢失了?.My PacketListener无法捕获这些脱机消息.Please帮助我

EN

回答 3

Stack Overflow用户

发布于 2015-09-11 23:27:07

Asmack已弃用。使用Smack。一个用Java为JVM和Android编写的开源XMPP客户端库。将以下行添加到gradle文件中:

代码语言:javascript
复制
compile 'org.igniterealtime.smack:smack-android:4.1.3'
compile 'org.igniterealtime.smack:smack-tcp:4.1.3'
compile 'org.igniterealtime.smack:smack-extensions:4.1.3'
票数 0
EN

Stack Overflow用户

发布于 2015-12-17 22:46:18

这个问题很容易解决。在与XMPP服务器建立连接之前,只需使用ASmack库提供的ProviderManager类注册提供者即可。

如果这不能解决您的问题,请访问您的本地服务器并搜索脱机邮件,并选择选项ALWAYS STORE将存储限制设置为1000kb。默认为100kb。希望这能起作用。

票数 0
EN

Stack Overflow用户

发布于 2018-01-04 03:03:18

经过一番努力,我终于解决了这个问题。在您的openfire管理页面,转到“客户端设置”,并减少空闲时间从360秒(默认)到1秒(可能)。只有当您断开与Internet的连接时,它才能检测到您处于脱机状态,并将其余邮件保留为脱机状态。

@Override public void onNetworkConnectionChanged(boolean isConnected) {

代码语言:javascript
复制
    if(isConnected){
        new Thread() {

            public void run() {
                try {
                    XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();
                    builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
                    builder.setUsernameAndPassword("phone", "admin");
                    builder.setSendPresence(true);
                    builder.setServiceName(<Service name>);
                    builder.setHost(<Host name>);
                    builder.setResource("Test");
                    builder.setDebuggerEnabled(true);
                    Presence presence = new Presence(Presence.Type.available);
                    presence.setStatus("Available");
                    connection = new XMPPTCPConnection(builder.build());
                    connection.connect();
                    connection.login();
                    Presence presence123 = new Presence(Presence.Type.available);
                    presence123.setStatus("Available");
                    try {
                        connection.sendStanza(presence123);
                    } catch (SmackException.NotConnectedException e) {
                        e.printStackTrace();
                    }
                    StanzaFilter filter = new AndFilter(new StanzaTypeFilter(Message.class));
                    PacketListener myListener = new PacketListener()
                    {
                        public void processPacket(Stanza stanza)
                        {
                            retrieveMessage(stanza,userType);
                        }
                    };
                    connection.addPacketListener(myListener, filter);
                    try {
                        connection.sendStanza(presence);
                    } catch (SmackException.NotConnectedException e) {
                        e.printStackTrace();
                    }

                } catch (SmackException | XMPPException | IOException e) {
                    e.printStackTrace();
                }


                //return connection.isConnected();
            }

        }.start(); 

上面的功能运行良好,能够检索离线消息。方法"retrieveMessage(stanza,userType);“用于处理传入的消息并更新适配器。请确保在重新连接时将在线状态发送为“可用”。如果还有什么问题,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32463547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档