问题描述
我写的聊天应用程序使用XMPP和Smack Android库。我发送消息使用下面的代码,一切都很好。
final ChatManager chatManager = ChatManager.getInstanceFor(connection);
chatManager.addChatListener(this);
....
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
chat.addMessageListener(this);
}
@Override
public void processMessage(Chat chat, Message message) {
// Do something here.
}
Chat chat = ChatManager.getInstanceFor(connection).createChat(jid);
chat.sendMessage("message");
问题
不幸的是,上面的API已经过时了org.jivesoftware.smack.chat.Chat
,我应该使用org.jivesoftware.smack.chat2.Chat
,所以我对实现进行了如下更改
final ChatManager chatManager = ChatManager.getInstanceFor(connection);
chatManager.addOutgoingListener(this);
chatManager.addIncomingListener(this);
....
Chat chat = ChatManager.getInstanceFor(connection).chatWith(jid);
chat.send("message");
在这种情况下,我仍然可以收到传入的消息,但当我尝试使用chat.send("message");
发送消息时,服务器没有收到任何消息,也没有调用addOutgoingListener
回调。
知道为什么吗?
3条答案
按热度按时间wnavrhmk1#
下面是一个老版本smack的例子:
idfiyjo82#
答案
再深入挖掘一下,我找到了答案,下面的代码将有助于发送消息
发送消息代码
结论
因此,您需要创建一个
Message
对象,而不是发送字符串消息。我认为更重要的是在构造函数中指定Message.Type.chat
,以及jid
,然后调用chat.send(...)
avwztpqn3#
您可以参考以下代码片段:
链接是https://ramzandroidarchive.wordpress.com/2016/03/13/send-messages-over-xmpp-using-smack-4-1/。