作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 XMPP 制作聊天应用程序。为此,我引用了 this tutorial并成功实现。但是现在我无法让服务器接收到该特定消息并更新我的本地数据库。请给我任何想法如何做到这一点。
我正在用 chatId 保存一条消息。那么我从哪种 smack 方法中得到这个回执消息 id?
最佳答案
您必须启用 stream management .
static {
XMPPTCPConnection.setUseStreamManagementDefault(true);
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
}
当您发送消息时,您会为该消息添加一个 ack 监听器,如下所示。
try {
if (mConnection.isSmEnabled()) {
try {
mConnection.addStanzaIdAcknowledgedListener(message.getStanzaId(), new StanzaListener() {
@Override
public void processPacket(Stanza packet) throws NotConnectedException {
updateMessageStatus(packet);
}
});
} catch (StreamManagementException.StreamManagementNotEnabledException e) {
e.printStackTrace();
}
}
mConnection.sendStanza(message);
} catch (NotConnectedException e) {
e.printStackTrace();
}
现在,在 updateMessageStatus(packet) 方法中,您可以通过 ID (packet.getStanzaId()) 在数据库中找到消息,并将状态从“待定”更新为“已发送”。
Please take note that your server needs to enable stream management too.
关于Android smack 服务器回执确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35161740/
我是一名优秀的程序员,十分优秀!