不工作的XMPP Android的送达回执请求(aSmack) [英] Delivery receipt requests not working for XMPP Android (aSmack)

查看:664
本文介绍了不工作的XMPP Android的送达回执请求(aSmack)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的Openfire与aSmack( https://github.com/Flowdalic/asmack

I'm using OpenFire with aSmack (https://github.com/Flowdalic/asmack).

我似乎无法得到DeliveryReceipts工作。

I can't seem to get DeliveryReceipts working.

我这样做,当我创建一个连接:

I do the following when I create a connection:

//create connection
connection.login(username, password);
DeliveryReceiptManager.getInstanceFor(connection).enableAutoReceipts();
DeliveryReceiptManager.getInstanceFor(connection).addReceiptReceivedListener(new ReceiptReceivedListener()
{
        @Override
        public void onReceiptReceived(String arg0, String arg1, String arg2)
        {
            Log.v("app", arg0 + ", " + arg1 + ", " + arg2);
        }
});

我使用发送消息给其他用户:

I'm sending a message to another user using:

//send chat
Message msg = new Message(id, Message.Type.chat);
msg.setBody(chat);
DeliveryReceiptManager.addDeliveryReceiptRequest(msg);
connection.sendPacket(msg);

以上,虽然消息被与ReceiptRequest发送不起作用。听者没有得到在发送的结束虽然接收器接收到该消息被解雇。 (我证实,经过调试,一个DeliveryReceiptRequest确实得到重视到发送的消息)。

The above does not work although the message gets sent with the ReceiptRequest. The listener does not get fired at the sender's end although the receiver receives the message. (I confirmed it through debugging that a DeliveryReceiptRequest does indeed get attached to the message that is sent).

我也试过手动使用寄回收据在我PacketListener具有以下(MessageTypeFilter(Message.Type.chat)):

I've also tried manually sending back the Receipt by using the following in my PacketListener with (MessageTypeFilter(Message.Type.chat)):

Packet received = new Message();
received.addExtension(new DeliveryReceipt(packet.getPacketID()));
received.setTo(packet.getFrom());
getConnection().sendPacket(received);

不过,在接收端客户端收到消息,但好吗听众不会在发件人的系统被解雇。什么我失踪?

Still, the client at the receiving end receives the message alright but the listener does not get fired in the sender's system. Anything I'm missing?

推荐答案

添加这些线路在设置之前,连接和自动收据将与ReceiptReceivedListener工作。好像DeliveryReceipt扩展默认情况下未注册。

Add these lines before you set up your connection and Auto Receipts will work with ReceiptReceivedListener. Seems like the DeliveryReceipt extensions aren't registered by default.

ProviderManager.getInstance().addExtensionProvider(DeliveryReceipt.ELEMENT, DeliveryReceipt.NAMESPACE, new DeliveryReceipt.Provider());
ProviderManager.getInstance().addExtensionProvider(DeliveryReceiptRequest.ELEMENT, new DeliveryReceiptRequest().getNamespace(), new DeliveryReceiptRequest.Provider());

这篇关于不工作的XMPP Android的送达回执请求(aSmack)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆