我需要收到的xml是:
<message id="qm5Dx8" to="adsfxcv" type="chat"from="adsf"
msgType="2"
thumbnail="randomThumbnail"
serverMediaURL="random"
isFromMe="1"
status="1"><body>Image</body><request xmlns='urn:xmpp:receipts'/></message>
消息由 MyCustomMessage extends Message 类发送。
在我的消息监听器中,我需要获取数据包的地方是:
public void processPacket(Packet packet) {
String recivedPacket = packet.toXML();
try {
if (packet instanceof MyCustomMessage) {
MyCustomMessage msg = (MyCustomMessage) packet;
....
但是我只在消息标签中收到id,to,type和from。并且数据包的实例也是Message,它说,不能将数据包转换为消息。 PLZ指导我如何收到我想要的包裹。
答案 0 :(得分:4)
你做不到。此外,您永远不应该延长Message
或Presence
类。
永远不要将自定义值添加到指定的流元素属性(例如,消息的type属性的新值),并且永远不要将新属性添加到顶级元素(就像您使用msgType
所做的那样,{{ 1}}等等。
这有可能打破局面!不要这样做。另见"XEP-0134: XMPP Design Guidelines § 2.1 XMPP is Sacred"。这就是Smack无法实现的原因。相反,使用自定义扩展元素,如xnyhps在其示例中显示的(msgTimeStamp
元素)。另请参阅"RFC 6120 § 8.4 Extended Content"这些在Smack中称为PacketExtension。
另见this answer和问题。