gpt4 book ai didi

android - 送货回执请求不适用于 XMPP Android (aSmack)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:36 25 4
gpt4 key购买 nike

我将 OpenFire 与 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);

仍然,接收端的客户端可以正常接收消息,但不会在发送方的系统中触发监听器。有什么我想念的吗?

最佳答案

在设置连接之前添加这些行,自动收据将与 ReceiptReceivedListener 一起使用。似乎默认情况下未注册 DeliveryReceipt 扩展。

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

关于android - 送货回执请求不适用于 XMPP Android (aSmack),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21458018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com