我在用户登录时使用onDisconnect,如下所示:
currentUser = mAuth.getCurrentUser();
if(currentUser != null)
{
String online_user_id = mAuth.getCurrentUser().getUid();
UserReference = FirebaseDatabase.getInstance().getReference()
.child("users").child(online_user_id);
UserReference.addValueEventListener((new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
UserReference.child("online").onDisconnect().setValue(false);
UserReference.child("online").setValue("true");
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}));
}
在线将设置为" true"当:
在线将设置为" false"当:
问题是当用户注销时,在firebase数据库中,子项在线总是设置为" true"只要app运行和互联网连接... 我想在用户退出时将在线设置为false ...请帮帮我?
更新:
我的退出代码
我试试2选项
这个选项在下面设置循环infinte,在线设置为" true"和"假"
mAuth = FirebaseAuth.getInstance();
UserReference = FirebaseDatabase.getInstance().getReference()
.child("users").child(online_user_id);
UserReference.addValueEventListener((new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
UserReference.child("online").onDisconnect().setValue(false);
UserReference.child("online").setValue("false");
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}));
mAuth.signOut();
这下面的第二个选项使数据库在线设置" true",然后回到" false"再次
try {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.child("users").child(cur).child("online").setValue("false");
Toast.makeText(MainActivity.this,"us: "+cur, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
这对您有帮助吗?
在您退出FirebaseAuth之前,请写以下行:
FirebaseDatabase.getInstance()。goOffline();
参考此答案: Disconnect programmatically from firebase
我还建议检查有关“管理状态”的文档: https://firebase.google.com/docs/database/android/offline-capabilities?hl=en