如果用户关闭 wi-fi、3g、4g 等并反向(无互联网连接)。 Firebase 数据库名称子连接:(true/false)
因此,当互联网连接、wi-fi、3g、4g 等关闭或丢失时,用户就会处于离线状态,因此无法找到他。
记住两个场景:之前和之后。如果用户在其他用户搜索他之前离线,那么他不会显示在列表结果中,如果用户在其他用户搜索他之后离线,那么它将在该用户上显示“不再可用”图标
请有人帮助我解决这个问题。
为了解决这个问题,您可以在 Firebase 实时数据库中创建一个新节点来保存所有在线用户,这样当用户打开应用程序时,您将立即将其 ID 添加到这个新创建的节点中。然后,如果你想检查用户是否在线,只需检查他的 id 是否存在于列表中即可。
您还可以添加一个名为的新属性isOnline
对于数据库中的每个用户,然后相应地更新它。
为此,我建议您使用 Firebase 的内置onDisconnect()
方法。它使您能够预定义客户端断开连接后立即发生的操作。
See Firebase 文档 https://firebase.google.com/docs/database/android/offline-capabilities#section-presence.
您还可以检测用户的连接状态。对于许多与状态相关的功能,您的应用程序了解其何时在线或离线非常有用。 Firebase 实时数据库提供了一个特殊位置:/.info/connected
每次 Firebase 实时数据库客户端的连接状态发生变化时都会更新。这是官方文档中的一个示例:
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
System.out.println("not connected");
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)