I\'m trying to make a chat application using XMPP. For this, I referred to this tutorial and successfully implemented it. But now I\'m unable to get that particular message is r
connection.setUseStreamManagement(true);
It'll enable stream management (XEP-198) on the client side.
http://xmpp.org/extensions/xep-0198.html#acking
NB: It'll only work if the server supports XEP-198.
You have to enable stream management.
static {
XMPPTCPConnection.setUseStreamManagementDefault(true);
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
}
when you send out a mesage, you add an ack listener for that message, like this.
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();
}
Now, inside updateMessageStatus(packet) method, you find message in your database by id (packet.getStanzaId()) and update status from "pending" to "sent".
Please take note that your server needs to enable stream management too.