我们如何在 smack 或来自 android 的 xmpp 中获得对发件人的消息读取/看到确认

Posted

技术标签:

【中文标题】我们如何在 smack 或来自 android 的 xmpp 中获得对发件人的消息读取/看到确认【英文标题】:how we get Message Read/seen Acknowledgment to Sender in smack or in xmpp from android 【发布时间】:2017-11-16 13:40:12 【问题描述】:

我们如何在 android 的 smack 或 XMPP 中获得消息读取/看到确认, 1. Single Tick Working(当用户发送消息然后服务器给予确认) 2. Double Tick 工作(当消息发送到接收设备但接收方未看到消息时)

但是当接收者读取/看到消息时,我们如何向发送者发送确认?

【问题讨论】:

你试过什么?请分享。 【参考方案1】:

您可以使用 MessageEventNotificationListener 和 MessageEventManager。 1) 每条消息都以单勾号开头。 2)当消息被传递并且接收用户向发件人发送传递的通知时。发送方从单勾变为双勾 3)当接收用户阅读此消息时,该用户将显示的通知发送给发件人。发送方从双勾变为蓝色双勾。请查看 smack javadoc。

【讨论】:

【参考方案2】:

您必须使用 MessageEventManager。将其实例化为

messageEventManager = MessageEventManager.getInstanceFor(connection);

SENDER端,发送一个可见/显示的事件

messageEventManager.sendDisplayedNotification(to, messageID);

其中to 是您必须向其发送此事件的 JID,messageID 是您要为其发送此事件的消息的 ID。

现在在 RECEIVER 端注册一个如下的监听器:

messageEventManager.addMessageEventNotificationListener(messageEventNotificationListener);

MessageEventNotificationListener messageEventNotificationListener = new MessageEventNotificationListener() 
    @Override
    public void deliveredNotification(Jid from, String packetID) 

    

    @Override
    public void displayedNotification(Jid from, String packetID) 
      System.out.println("HERE packetID IS THE MESSAGE ID FOR WHICH YOU RECEIVED SEEN/DISPLAYED EVENT AND YOU CAN SET STATUS FOR THAT MESSAGE");
    

    @Override
    public void composingNotification(Jid from, String packetID) 

    

    @Override
    public void offlineNotification(Jid from, String packetID) 

    

    @Override
    public void cancelledNotification(Jid from, String packetID) 

    
;

【讨论】:

添加一些上下文来解释你的答案将如何解决问题,从长远来看这将真正帮助社区 感谢@ArunVinoth 的反馈我编辑了我的答案

以上是关于我们如何在 smack 或来自 android 的 xmpp 中获得对发件人的消息读取/看到确认的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 的 Smack 中接收文件?

XMPP Smack 4.1.0 rc1 ACCES(权限被拒绝)在 Android 上

如何在 Android 的 Smack 4.2 中了解 1:1 对话中的打字状态?

使用 xmpp + smack + openfire 在 android 中阻止用户

如何使用 smack-android 连接到禁用安全功能的 ejabberd?

Android Smack MUC 400 错误请求发送群聊消息