如在asmack documentation中看到的那样,当您从Chat的MessageListener中的processMessage()方法中收到一个Chat类型消息时,我应该使用Chat.sendMessage()来发回此消息以通知消息接收。使用Asmack在XMPP中回复消息
但是在我的聊天实现中,当打开一对一聊天时我不使用ChatManager,我有一个Service和Listener来完成这些事情。
服务中我有一个PacketListener可以接收,并且我正在尝试正确地发送回消息,正如我在asmack documentation中看到的,但它不起作用。
this.xmppChat.addPacketListener(new PacketListener() {
@Override
public synchronized void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getType() == Message.Type.chat) {
Log.i("XMPP_SERVICE",
String.format("Mensaje recibido de %s",
message.getFrom()));
// Rest of code implementation...
// At the end try to send back message to notify reception.
XMPPService.this.xmppChat.sendMessage(new Message(message.getBody()));
}
}
}, new PacketTypeFilter(Message.class));
的XMPPService.this.xmppChat.sendMessage(消息消息)方法:
public boolean sendMessage(Message message) {
Log.i("XMPP_INFO", "Enviando el mensaje");
try {
this.xmppManager.getConnection().sendPacket(message);
Log.i("XMPP_INFO", "Enviado el mensaje");
return true;
} catch (Exception ex) {
Log.e("XMPP_ERROR", ex.getMessage());
return false;
}
}
我做错了什么?我怎样才能解决?
此致敬礼,并提前致谢。
什么不起作用?一些细节会有帮助。 – Flow