12

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が発生するのでしょうか?

4

2 に答える 2