我们如何在 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 中获得对发件人的消息读取/看到确认的主要内容,如果未能解决你的问题,请参考以下文章
XMPP Smack 4.1.0 rc1 ACCES(权限被拒绝)在 Android 上
如何在 Android 的 Smack 4.2 中了解 1:1 对话中的打字状态?
使用 xmpp + smack + openfire 在 android 中阻止用户