У меня есть следующий код, который должен прослушивать сообщения:
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());
}
}
Но мой журнал никогда не запускается.
Однако у меня есть setDebuggerEnabled(true)
в моем коде, и появляется следующее: 10-31 15:41:51.264 28889-28993/com.lfdversluis.buurapp D/SMACK: RECV (0): <message to="[email protected]/Smack" type="chat" id="53" from="[email protected]/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);
}
}
И тосты с "не могли отправлять сообщения" время от времени всплывали. Так что, видимо, я не подключен, и я не могу снова подключиться?
Итак, как я могу сделать мое соединение более стабильным и убедиться, что мои сообщения отправлены?