XMPP 交付收据 XEP-0184 与 ASMACK

Posted

技术标签:

【中文标题】XMPP 交付收据 XEP-0184 与 ASMACK【英文标题】:XMPP Delivery Receipts XEP-0184 with ASMACK 【发布时间】:2013-08-02 00:24:17 【问题描述】:

我想使用 Asmack 为每条收到的消息发送回执,但代码如下:

    DeliveryReceiptManager.getInstanceFor(connection).setAutoReceiptsEnabled(true);

结果:

08-02 02:19:30.669: E/androidRuntime(32597): java.lang.NullPointerException 08-02 02:19:30.669: E/AndroidRuntime(32597): at org.jivesoftware.smackx.receipts.DeliveryReceiptManager.(DeliveryReceiptManager.java:62) 08-02 02:19:30.669: E/AndroidRuntime(32597): at org.jivesoftware.smackx.receipts.DeliveryReceiptManager.getInstanceFor(DeliveryReceiptManager.java:81)

确定连接对象不为空。 我按照这个页面来达到这一点: http://bamboo.igniterealtime.org/browse/SMACK-TRUNK-59/commit

http://www.java2s.com/Open-Source/Android-Open-Source-App/Utility/yaxim/org/yaxim/androidclient/service/SmackableImp.java.htm

【问题讨论】:

您找到解决方案了吗?我面临同样的问题。获取空指针异常 @AkhileshSk 看下面,在评论中我回复说我放弃了,并做出了自己的“接收确认”,其他人也是如此,所以似乎仍未解决。 请问您能告诉我您是如何处理收货确认的吗? 【参考方案1】:

在上述代码之前,你是否在连接对象上调用了connect?

【讨论】:

是的,我只是放弃了,并以我的“自己的方式”实现了 id。但是,如果有人知道解决方案,也许它会对那里的其他人有所帮助。 我也以自己的方式做到了。细粒度控制更容易,我将它用于其他功能【参考方案2】:

你可以在打电话之前试试

<i>Class.forName("org.jivesoftware.smackx.ServiceDiscoveryManager");</i>

【讨论】:

以上是关于XMPP 交付收据 XEP-0184 与 ASMACK的主要内容,如果未能解决你的问题,请参考以下文章

如何知道我的消息是不是成功传送到 XMPP 服务器?

FCM通知交付报告

获取 smack 中最近消息的传递状态

Apple 推送通知 - 收货收据

OpenFire 或 XMPP 协议是不是支持消息通知(待处理、已交付、已读取),如 BBM(Blackberry Messenger)

GCM XMPP 交付回执发送其他机器,GCM 收到其确认后关闭连接