小智 15
您必须启用流管理.
static {
XMPPTCPConnection.setUseStreamManagementDefault(true);
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
}
Run Code Online (Sandbox Code Playgroud)当你发出消息时,你为这个消息添加一个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();
}
Run Code Online (Sandbox Code Playgroud)
现在,在updateMessageStatus(packet)方法中,您可以通过id(packet.getStanzaId())在数据库中找到消息,并将状态从"pending"更新为"sent".
请注意您的服务器也需要启用流管理.
| 归档时间: |
|
| 查看次数: |
2645 次 |
| 最近记录: |