私のチャットアプリケーションでは、ユーザーがサインインしたときにオフラインメッセージを取得したいと考えています (誰かが彼にメッセージを送信した場合)。ユーザーがオンライン状態のときに通知を受け取り、ユーザーがサインインした後にメッセージを取得できません。xmpp log cat も確認しました。そこでオフライン メッセージを読むことはできますが、ユーザーにオフライン メッセージを通知することができません。
これは、サービスの onStart で使用しているリスナーです (サービスはユーザーのログオン時にすぐに開始されます)。
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
final PacketCollector collector = connection.createPacketCollector(filter);
connection.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet packet) {
// TODO Auto-generated method stub
//notification(packet.getFrom());
packet = collector.nextResult();
Message message = (Message)packet;
senderName = packet.getFrom();
int alphaPOS = senderName.indexOf("@");
String subSenderName = senderName.substring(0,alphaPOS);
if(UserChatActivity.checkPresence==false){
notificationforChat(subSenderName+": "+message.getBody(),packet.getFrom().toString());
}
}
}, filter);
}
これは、ユーザーがオンラインのときに正常に機能します。しかし、ユーザーがログインしたら、メッセージを通知する必要があります
ありがとう