2017-07-28 77 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/ –