如何在smack中设置自定义消息



我正在尝试使用Smack发送聊天。这是代码

  Chat chat = connection.getChatManager().createChat("2@coolcast.com", this);
  Message _msg = new Message();
  _msg.setBody("Hello this is a test message");
  chat.sendMessage(_msg);

此消息以type =" chat"的形式显示在收件人的结尾处。如何将此消息类型更改为自定义字符串,例如" my_custom_string"?

我尝试了此操作,但是很容易看出为什么以下内容不起作用

  Message.Type _type = Message.Type.fromString("my_custom_string");
  _msg.setType(_type);

Message是SMACK中的最终类,也遵循消息stanza的XMPP协议,因此您无法修改消息中的类型字段。但是我们不能最终放弃,在这里,您可以通过在Message Stanza中添加自定义扩展名来尝试一个小技巧,您只需要使用SMACK的提供商架构创建一个ExtensionElement,然后通过在Message对象上调用addExtension()方法将其添加到消息数据包中。/p>

是这样:

 <message from="demo@mydomain.com" to="demo2@mydomain.com" type="chat">
    <body>Hi this is demo 1</body>
    <my_custom_element xmlns="some_name_space" attributr="some_attribute">Some custom message</my_custom_element>
</message> 

您可以多次伸展到Smack中的任何数据包/节。

要了解有关SMACK提供商架构的更多信息,请遵循此链接

最新更新