我正在使用OpenFire和aSmack。交付收据请求不适用于XMPP Android(aSmack)
我似乎无法获得DeliveryReceipts的工作。
我做以下,当我创建一个连接:
//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);
}
});
我使用发送消息给其他用户:
//send chat
Message msg = new Message(id, Message.Type.chat);
msg.setBody(chat);
DeliveryReceiptManager.addDeliveryReceiptRequest(msg);
connection.sendPacket(msg);
以上,虽然消息被发送与不工作ReceiptRequest。尽管接收者收到了该消息,但收听者不会在发送者的一端被解雇。 (我通过调试确认DeliveryReceiptRequest确实会附加到发送的消息中)。
我也尝试手动通过使用在我PacketListener与(MessageTypeFilter(Message.Type.chat))在下述发送回收据:
Packet received = new Message();
received.addExtension(new DeliveryReceipt(packet.getPacketID()));
received.setTo(packet.getFrom());
getConnection().sendPacket(received);
尽管如此,在接收端的客户端接收消息没问题,但侦听器不会在发送者的系统中被解雇。我错过了什么?
检查如果服务器支持这个。 – 2014-01-30 15:40:52
我不认为这是一个服务器相关的功能。只有客户需要实现这一点。 – Bam
您是否确认收件人已发送收据?如果是这样,请使用调试器来跟踪收到的收据节的方式。 (a)Smack是开源的,因此您可以轻松调试代码。 – Flow