【问题标题】:MessageListener didnt receive full message ASMACK AndroidMessageListener 没有收到完整的消息 ASMACK Android
【发布时间】:2014-06-09 05:23:07
【问题描述】:

我想接收消息时遇到问题,现在我可以接收消息,但是缺少一些属性

    class MyMessageListener implements MessageListener {

    @Override
    public void processMessage(Chat chat, Message message) {
        Util.DebugLog("message->"+message.toXmlns());

    }

}

我得到的是

  <message to="2@buzoo.biz" type="chat" from="1@buzoo.biz/ff3b2485"><body asdf="asdf">aaa</body></message>

消息中的talk_id和聊天类型丢失。

这是我收到消息时想要的

  <message to="2@buzoo.biz" type="chat" talk_id="304" chat_type="0" from="1@buzoo.biz/ff3b2485"><body asdf="asdf">aaa</body></message>

【问题讨论】:

    标签: android asmack message-listener


    【解决方案1】:

    虽然 XMPP 并未严格禁止通过向预定义元素添加自定义属性(在您的情况下为 message)来扩展节,但最好将自定义数据添加为额外元素。这就是大多数 XMPP 扩展的设计方式。

    所以不是

    <message to="foo@bar.com" type="chat" myCustomData="myValue"><body>Hello!</body><message>
    

    你有

    <message to="foo@bar.com" type="chat"><body>Hello!</body><myExtension myCustomData="myValue"/></message>
    

    然后你只需要为myExtension写一个Provider,然后用Smack的ProviderManager注册。

    【讨论】:

    • 但 ios 和 web 可以接收该消息而不会丢失某些属性。那该怎么办?我真的很坚持
    • 将您的自定义数据放在&lt;message/&gt; 下的元素中,您将能够检索数据。
    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 2012-08-20
    • 2017-03-18
    • 2020-12-14
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多