Android アプリケーションに Firebase-backend を使用しています。チャット用のユーザー プレゼンス システムを構築したいと考えています。この目的のために、Firebase Guide からパターンを取得しました
final Firebase myConnectionsRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/users/joe/connections");
// stores the timestamp of my last disconnect (the last time I was seen online)
final Firebase lastOnlineRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/users/joe/lastOnline");
final Firebase connectedRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/.info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
// add this device to my connections list
// this value could contain info about the device or a timestamp too
Firebase con = myConnectionsRef.push();
con.setValue(Boolean.TRUE);
// when this device disconnects, remove it
con.onDisconnect().removeValue();
// when I disconnect, update the last time I was seen online
lastOnlineRef.onDisconnect().setValue(ServerValue.TIMESTAMP);
}
}
@Override
public void onCancelled(FirebaseError error) {
System.err.println("Listener was cancelled at .info/connected");
}
});
問題は、 onDisconnectイベントがいつ発生するかわからないことです。
アプリを開くたびに、ノード「users/joe/connections」に TRUE を書き込みますが、アプリを閉じると何も起こりません。WIFI をオフにすると、ブール値のパラメーターも削除されません。onDisconnect-event は、アプリを強制的に停止したとき、またはこのアプリを再インストールしたとき、または特定できなかったときにのみ発生しました。
したがって、私が正しく理解しているように、そのようなイベントを手動で処理する必要があります。
1) アプリを閉じます。
2) WiFi をオフにします。
3) 多分何か他のもの
アプリでプレゼンス機能を作成するには? しかし、いつonDisconnect-eventが発生するのでしょうか?