私のチャットアプリケーションでは、人がチャット画面にいないときは通知を受け取り、人がチャット画面にいないときは通知を受け取らないようにしたい(チャットは単にチャット画面自体に表示される必要があります) )。
その人がチャット画面にいるとき、そのユーザーのステータスを強制的に変更してブロードキャストします。ここでの問題は、ユーザーがメッセージ/チャットを受信したときに、ユーザーのデバイスで実行されているサービスがモバイル ユーザー自体の存在 (つまり、チャット画面にいるかどうか) をどのように判断するかということです。ユーザー自体の存在を取得することはできないと思います(ユーザー自体は名簿にリストされていないため、名簿の助けを借りて)
この関数は私のサービスクラスで書かれています
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);
notificationforChat(subSenderName+": "+message.getBody(),packet.getFrom().toString());
}
}, filter);
ユーザーがチャット画面自体にいるときに通知を停止する方法は?
私を助けてください