如何在 smack 中实现消息确认

Posted

技术标签:

【中文标题】如何在 smack 中实现消息确认【英文标题】:How to implement message Acknowledgement in smack 【发布时间】:2017-02-15 05:06:34 【问题描述】:

我已经在我的 android 应用程序中成功实现了一对一聊天。现在我想知道我的消息是否已送达。我用谷歌搜索了我的问题,但找不到任何解决方案。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以尝试在 Smack 中使用 ReceiptReceiveListener。

public class YourFragment extends Fragment implements ReceiptReceivedListener 

    @Override
    public void onReceiptReceived(String fromJid, String toJid, String receiptId, Stanza receipt) 
        if(isAdded())
            // Check if the receiptId equals to the receipt you have sent.
        
    

【讨论】:

我已经试过了。我在传出消息中添加了消息打包 id 并收到了它,但无法理解如何处理该 id ?? 在我的代码中,id 用于检查应将哪条消息标记为“已接收”。假设您的聊天视图中有 100 条消息,并且该应用程序在此视图中为每条消息收到 100 条回执,因此您需要知道在收到一张回执后应该将哪条消息标记为“已收到”。而receiptId就是为了这个目的。 对不起。我有点困惑。在我的列表视图中,没有唯一的字段/ID 以及特定的消息。所以请告诉我如何生成动态 id,以便我可以在收到确认时将特定消息标记为已传递? id是SMACK在Message对象中自动生成的 @begginer 我会说你能检查一下服务器是否有问题..?如果 JID 正确,则可能是您的服务器端有问题。

以上是关于如何在 smack 中实现消息确认的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 smack 和 openfire 获取 IOS 中每个聊天会话的最后一条消息?

如何添加删除确认消息

如何在 Android 应用中实现 XMPP 聊天?

Android smack 服务器收据确认

如何在 Jquery UI 对话框中实现“确认”对话框?

在 Android Smack 4.2 的消息节点中添加自定义标签