【发布时间】:2018-04-28 21:51:59
【问题描述】:
我想制作一个应用程序,如果用户连接到互联网,它必须在使用 firebase 的其他设备上显示为在线用户。什么应该是合适的方式?
【问题讨论】:
标签: android firebase-realtime-database
我想制作一个应用程序,如果用户连接到互联网,它必须在使用 firebase 的其他设备上显示为在线用户。什么应该是合适的方式?
【问题讨论】:
标签: android firebase-realtime-database
我建议使用 Firebase 的内置 onDisconnect() 方法。它使您能够预定义在客户端断开连接时立即执行的操作。
您还可以检测用户的连接状态。对于许多与状态相关的功能,让您的应用知道它何时在线或离线很有用。 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");
}
});
【讨论】:
您可以在您的 Firebase 中列出所有在线用户的列表,因此当用户打开应用程序时,您会立即将他的 ID 添加到列表中。 然后,如果要检查用户是否在线,只需检查他的Id是否在列表中即可。
您还可以将isOnline 变量添加到数据库中的用户引用中。
【讨论】: