2017-07-28 79 views
1

離線消息在用戶收到時未提供給用戶。 DelayInformation info =(DelayInformation)message.getExtension(「x」,「jabber:x:delay」);其中,使用openfire服務器獲取離線消息的問題

返回null。

當我迭代message.getExtensions()的集合時,我得到延遲urn:xmpp:delay。

任何人都可以解釋這一點。 我正在使用smack和smackx.jar。雖然smackx.jar有smack.providers它沒有考慮到。

一些建議使用urn:xmpp:delay,這會導致類轉換異常。

DelayInformation inf =(DelayInformation)message.getExtension(「delay」,「urn:xmpp:delay」);

異常: java.lang.ClassCastException:org.jivesoftware.smack.packet.DefaultPacketExtension

+0

給我你的smack和運行時環境的版本(純java或android) –

+0

@LinYuCheng RunTime環境是java和使用smack.jar.For你的參考https://ufile.io/4vwz2 –

回答

0

如果這是Android的使用啪庫試試這個:

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 

這是另一個pos sibillity:

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

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

日誌輸出:

I/RECVEIVED: delay 1: Mon Jul 31 06:08:58 GMT+02:00 2017 
I/RECVEIVED: delay 2: 1501474138319 

好運

0

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

F你是對Java 7的咂嘴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" 
+0

如果你不使用gradle或者maven,你可以在這裏下載jar文件: https://oss.sonatype.org/content/repositories/releases/org/igniterealtime/smack/ –