如何读取android中xmpp消息标签中添加的自定义属性?

Posted

技术标签:

【中文标题】如何读取android中xmpp消息标签中添加的自定义属性?【英文标题】:How to read custom attributes added in message tag of xmpp in android? 【发布时间】:2014-10-24 06:29:44 【问题描述】:

正在发送的XMPP 消息在消息标签中添加了一些自定义属性,例如:

<message to = " asdf" from = "asdf" type = "chat" id="adsf" direction = "asdf" speed = "asdf">
<body>Speed</body>
</message>

正在发送的消息一切正常。但是在接收端,我不知道如何读取这些额外的属性,即 direction and speed 添加到消息标签中。我尝试制作自定义 PacketListener 但为此我需要更改整个 smack 库 bcz 每个类都连接到其他类。

【问题讨论】:

这个问题与***.com/questions/26516386重复 【参考方案1】:

你不能。

永远不要向指定的流元素属性添加自定义值(例如,消息的 type 属性的新值),并且永远不要向***元素添加新属性(就像您对 msgTypemsgTimeStamp 和等等)。

这有可能破坏事物!不要这样做。另见"XEP-0134: XMPP Design Guidelines § 2.1 XMPP is Sacred"。这就是为什么在 Smack 中不可能。相反,使用自定义扩展元素,就像他的示例中显示的 xnyhps(data 元素)。另请参阅 "RFC 6120 § 8.4 Extended Content" 在 Smack 中称为 PacketExtension。

另请参阅this answer 和问题。

【讨论】:

以上是关于如何读取android中xmpp消息标签中添加的自定义属性?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 smack 或来自 android 的 xmpp 中获得对发件人的消息读取/看到确认

如何在 Smack 4.1 中的 XMPP 消息标签中添加自定义属性(昵称)

Android中实现自定义XMPP消息包收发

Android中实现自定义XMPP消息包收发

Android中实现自定义XMPP消息包收发

如何在 android 中编辑和删除 XMPP 中的特定消息?