使用openfire服务器获取脱机消息的问题

时间:2017-07-28 04:38:02

标签: openfire smack

当此人有效时,离线消息无法传递给用户。

DelayInformation info =(DelayInformation)message.getExtension(“x”,“jabber:x:delay”);

返回null。

当我迭代message.getExtensions()的集合时,我得到延迟urn:xmpp:delay。

任何人都可以解释这一点。 我正在使用smack和smackx.jar。虽然smackx.jar有点提供,但它没有被考虑在内。

有人建议使用urn:xmpp:delay,这会导致类强制转换异常。    的

DelayInformation inf =(DelayInformation)message.getExtension(“delay”,“urn:xmpp:delay”);

例外: java.lang.ClassCastException:org.jivesoftware.smack.packet.DefaultPacketExtension

2 个答案:

答案 0 :(得分:0)

如果这是用于使用Smack库的Android,请试试这个:

<receiver
        android:name="com.example.EventBroadcaster"
        android:exported="true" >
        <intent-filter android:priority="1000" >
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
 </receiver>


记录输出:

ExtensionElement delay = message.getExtension("urn:xmpp:delay");
if(message.getExtension("urn:xmpp:delay") != null){

    Log.i("RECVEIVED", "delay 1: " + delay.toXML());
    Log.i("RECVEIVED", "delay 2: " + delay.getNamespace());
    Log.i("RECVEIVED", "delay 3: " + delay.getElementName());
}

这是另一种可能性:

I/RECVEIVED: delay 1: <delay xmlns='urn:xmpp:delay' stamp='2017-07-31T04:09:23.224+00:00' from='81.89.100.197'></delay> 
I/RECVEIVED: delay 2: urn:xmpp:delay 
I/RECVEIVED: delay 3: delay 

日志输出:

DelayInformation delayInformation = DelayInformation.from(message);
if (delayInformation != null) {

    Log.i("RECVEIVED", "delay 1 : " + delayInformation.getStamp());
    Log.i("RECVEIVED", "delay 2 : " + delayInformation.getStamp().getTime());
}

祝你好运

答案 1 :(得分:0)

根据文件: https://github.com/igniterealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide

如果您正在使用java 7上的smack 4.2进行开发,则需要以下依赖项才能使其正常工作:

compile "org.igniterealtime.smack:smack-java7:4.2.0"
// Optional for XMPPTCPConnection
compile "org.igniterealtime.smack:smack-tcp:4.2.0"
// Optional for XMPP-IM (RFC 6121) support (Roster, Threaded Chats, …)
compile "org.igniterealtime.smack:smack-im:4.2.0"
// Optional for XMPP extensions support
compile "org.igniterealtime.smack:smack-extensions:4.2.0"