Goo*_*oey 6 android xmpp listener smack
我有以下代码应该监听消息:
ChatManager chatmanager = ChatManager.getInstanceFor(xmppManager.getConnection());
chat = chatmanager.createChat(otherJabberId);
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
Log.e("message trigger", message.getBody());
}
}
Run Code Online (Sandbox Code Playgroud)
但我的日志永远不会触发.
但是,setDebuggerEnabled(true)我的代码中有以下内容:10-31 15:41:51.264 28889-28993/com.lfdversluis.buurapp D/SMACK: RECV (0): <message to="test@app.buur.nu/Smack" type="chat" id="53" from="testje@app.buur.nu/Gajim"><body>test</body><request xmlns="urn:xmpp:receipts"/><thread>277945c1-772a-4d4b-8e1a-274153cfb8a6</thread></message>
所以收到了消息.我检查过,otherJabberId变量是正确的.只是听众没有触发.什么更奇怪,有时它只是工作正常.
我遇到的另一个问题是无法发送消息.
在这里,我有如上所述的聊天设置,并使用以下代码发送消息:
try {
chat.sendMessage(text.trim());
DataBaseManager db = new DataBaseManager(ChatActivity.this);
db.addMessageToDB(model);
addMessageToScreen(newMessage);
} catch (SmackException.NotConnectedException ignored) {
XMPPManager manager = XMPPManager.getInstance();
manager.reconnect(); // Maybe we need to reconnect due to an interrupt and retry..
try {
chat.sendMessage(text.trim());
DataBaseManager db = new DataBaseManager(ChatActivity.this);
db.addMessageToDB(model);
addMessageToScreen(newMessage);
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
Toasteroid.show(ChatActivity.this, "Could not send message. Please try again.", Toasteroid.STYLES.ERROR);
}
}
Run Code Online (Sandbox Code Playgroud)
并且偶尔弹出"无法发送消息"的祝酒词.显然我没有连接,我也无法重新连接?
那么如何才能使我的连接更稳定并确保我的消息被发送?
我认为你需要像这样更新你的代码:-
chat.addMessageListener(new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("Received message: "
+ (message != null ? message.getBody() : "NULL"));
}
});
Run Code Online (Sandbox Code Playgroud)
更改ChatMessageListener()为MessageListener(),MessageListener()这在哪里 ->org.jivesoftware.smack.MessageListener;
我希望它能工作。
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |