如何将receiptid映射到smack中发送的消息

Posted

技术标签:

【中文标题】如何将receiptid映射到smack中发送的消息【英文标题】:how to map receiptid to sent message in smack 【发布时间】:2014-07-12 16:01:26 【问题描述】:

我正在使用 asmack 从客户端发送消息。我正在使用 xmppconnection.send 发送消息并添加了此 DeliveryReceiptManager.addDeliveryReceiptRequest(msg);

发送前。 在传递消息时,我添加了一个监听器

DeliveryReceiptManager.getInstanceFor(connection).addReceiptReceivedListener(new ReceiptReceivedListener()                     
@Override
public void onReceiptReceived(String arg0, String arg1, String arg2) 

我在其中得到receiptid,

我想知道如何将此receiptid 映射到发送消息。

【问题讨论】:

【参考方案1】:

third argument of the onReceiptReceived callback 是接收 ID,它是接收到的数据包的节/消息 ID,即。这张收据的用途。

您可以通过Packet.getPacketID()获取消息ID

【讨论】:

【参考方案2】:

通过添加请求并从 msg.getPacketId() 我得到数据包 ID,我会在收到时检查它。

                 DeliveryReceiptManager.addDeliveryReceiptRequest(msg);
                 System.out.println("packetid:"+msg.getPacketID());

                connection.sendPacket(msg);

【讨论】:

以上是关于如何将receiptid映射到smack中发送的消息的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Smack Android 库将 XMPP IQ 节发送到服务器?

Android smack 服务器收据确认

如何使用 Smack 4.1 创建、发送和接收 IQ 数据包

java中如何通过Smack实现流管理?

如何在使用 Smack 发送聊天时检测错误

如何在 xmpp smack 或 asmack 中将文件发送给离线用户?