0
Openfire 4.0.2
smack 4.1.7
Android Studio 2.1.2
私は、メッセージが送信されたことを知るために、DeliveryReceiptsを使用しようとしています。ただし、onReceiptReceived
は呼び出されません。 私は次のことを行っている:onReceiptReceivedは、DelieveryReceiptsのために決して扱われません。
DeliveryReceiptManager deliveryReceiptManager = DeliveryReceiptManager.getInstanceFor(mClientConnection);
deliveryReceiptManager.autoAddDeliveryReceiptRequests();
DeliveryReceiptManager.setDefaultAutoReceiptMode(DeliveryReceiptManager.AutoReceiptMode.always);
deliveryReceiptManager.addReceiptReceivedListener(new ReceiptReceivedListener() {
@Override
public void onReceiptReceived(String fromJid, String toJid, String receiptId, Stanza receipt) {
log.log(Level.INFO, "OnReceiptReceived fromJid: " + fromJid + " toJid: " + toJid + " receiptId: " + receiptId);
}
});
は、メッセージの送信:
ChatManager chatManager = ChatManager.getInstanceFor(mClientConnection);
Message msg = new Message(username, Message.Type.chat);
msg.setBody(message);
final String msgReceipt = DeliveryReceiptRequest.addTo(msg);
log.log(Level.INFO, "msgReceiptRequest: " + msgReceipt);
Chat chat = chatManager.createChat(username, mChatMessageListener);
chat.sendMessage(message);
をクライアントから受信するクライアント
<message to='[email protected]' id='6xS4w-43' type='chat'><body>hello</body><thread>32091ad3-8da9-4758-9656-c06eb72532a2</thread><request xmlns='urn:xmpp:receipts'/></message>
オン
SENT (0): <message to='[email protected]' id='6xS4w-43' type='chat'><body>hello</body><thread>32091ad3-8da9-4758-9656-c06eb72532a2</thread><request xmlns='urn:xmpp:receipts'/></message>
を送りますは、クライアントがonReceiptReceivedイベントをトリガーするかもしれない、私は戻って送信するために考えていたメッセージを受信したときに受信するクライアントは、私がこのような何かをしようとしてい
メッセージを受け取った場合、私は知らないので扱われることはありません
私は手動で領収書を送信することにより、この問題を解決するために管理している任意の提案のためのchat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message msg) {
if(!msg.getBody().isEmpty()) {
Message ms = new Message();
ms.addBody("EN", "delivered");
ms.setTo(msg.getFrom());
ms.setStanzaId(msg.getStanzaId());
DeliveryReceiptRequest.addTo(ms);
mClientConnection.sendStanza(ms);
}
log.log(Level.INFO, "receiveChatMessages Received prompted message: " + msg.getBody());
}
}
多くのおかげで、
if(DeliveryReceiptManager.hasDeliveryReceiptRequest(message))受信した領収書で私の場合でもこの条件は常にfalseです。すべての回避策?? – Moulesh