【问题标题】:get delivery status of recent messages in smack获取 smack 中最近消息的传递状态
【发布时间】:2018-07-11 13:29:55
【问题描述】:

我是 smack 4.2.4 和 xmpp 的新手。我已经发送了一堆消息,但是recipent无法获取它们,我已经关闭了应用程序,下次我打开应用程序时想检查消息的状态,是否已发送。

【问题讨论】:

    标签: android xmpp smack


    【解决方案1】:

    您可以使用XEP-0184: Message Delivery Receipts 来检查邮件是否已送达目的地。首先你必须添加 smack-extensions 的 gradle 依赖:

    implementation 'org.igniterealtime.smack:smack-extensions:4.2.2;
    

    然后使用此代码,当您要发送消息时,将接收请求添加到节:

    DeliveryReceiptRequest.addTo(message);
    

    然后你可以像这样在监听器中接收交付状态:

    DeliveryReceiptManager d = DeliveryReceiptManager.getInstanceFor(connection);
    d.addReceiptReceivedListener(new ReceiptReceivedListener() {
        @Override
        public void onReceiptReceived(Jid fromJid, Jid toJid, String receiptId, Stanza receipt) {
            Log.i("delivery", "for: " + receiptId + " received");
            //here you can use sid or receiptId to identify which message is delivered
        }
    });
    

    请考虑,当您发送消息时,一个随机的唯一节 id (sid) 将设置为您的节。您必须将其保存在数据库中的消息行中,然后您可以在收到收据时使用此 sid 进行识别。

    【讨论】:

      猜你喜欢
      • 2019-01-30
      • 2017-12-22
      • 2017-10-28
      • 2015-12-20
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多