【问题标题】:I am not able to receive offline messages in MessageListener method in smack android我无法在 smack android 的 MessageListener 方法中接收离线消息
【发布时间】:2019-09-07 09:18:29
【问题描述】:

当我启用 setUseStreamManagementDefault 或 setUseStreamManagementResumptiodDefault 时,我无法在 ChatManagerListener 界面中接收离线消息。如果 setUseStreamManagementDefault 和 setUseStreamManagementResumptiodDefault 都被禁用,那么我能够接收离线消息,但我无法在 addStanzaAcknowledgedListener 中接收节确认。我想接收离线消息以及节确认我该怎么办?

我尝试使用 OfflineMessageManager,但无法接收离线消息。 我不想使用 OfflineMessageManager ,不使用 OfflineMessageManager 是否可以接收离线消息?

【问题讨论】:

    标签: android xmpp ejabberd smack


    【解决方案1】:

    AFAIK 你必须使用 OfflineMessageManager。我没有找到其他方法。

    OfflinemessageManager offlineMessageManager = new OfflineMessageManager(connection);
    if (offlineMessageManager.supportsFlexibleRetrieval() && offlineMessageManager.getMessageCount() > 0) {
    
                    List<String> messagesNodes = offlineMessageManager.getHeaders().stream()
                            .map(OfflineMessageHeader::getStamp)
                            .collect(Collectors.toList());
                    offlineMessageManager.getMessages(messagesNodes)
                            .forEach(message -> {
                                System.out.println(String.format(offlineMessageOffline, message.getBody(), message.getFrom()));
                            });
                    offlineMessageManager.deleteMessages();
                }
    

    也不需要在这段代码中做任何事情。 IncomingChatMessageListener会自动收听离线消息

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 2017-06-18
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      • 2018-05-31
      • 2016-05-12
      相关资源
      最近更新 更多