【问题标题】:check user online if user has internet connection using firebase如果用户有使用 firebase 的 Internet 连接,请在线检查用户
【发布时间】:2018-04-28 21:51:59
【问题描述】:

我想制作一个应用程序,如果用户连接到互联网,它必须在使用 firebase 的其他设备上显示为在线用户。什么应该是合适的方式?

【问题讨论】:

    标签: android firebase-realtime-database


    【解决方案1】:

    我建议使用 Firebase 的内置 onDisconnect() 方法。它使您能够预定义在客户端断开连接时立即执行的操作。

    见Firebase documentation。

    您还可以检测用户的连接状态。对于许多与状态相关的功能,让您的应用知道它何时在线或离线很有用。 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");
            }
    });
    

    【讨论】:

    • 如何查看其他用户在线状态?就像whatsapp在线/离线状态一样
    • @androidXP 如上面的答案所述。
    • 这仅适用于实时数据库吗?如何在 Firestore 数据库中实现这一点?
    • @SsubratRrudra 是的,这仅适用于 Firebase 实时数据库。第二个问题确实有点过于宽泛,无法在评论中合理地回答。因此,请使用自己的MCVE 发布另一个新问题,以便我和其他 Firebase 开发人员可以帮助您。
    【解决方案2】:

    您可以在您的 Firebase 中列出所有在线用户的列表,因此当用户打开应用程序时,您会立即将他的 ID 添加到列表中。 然后,如果要检查用户是否在线,只需检查他的Id是否在列表中即可。

    您还可以将isOnline 变量添加到数据库中的用户引用中。

    【讨论】:

    • 我可以不打开应用程序吗?当用户有互联网连接时,它应该在后台自动完成
    • 你应该像这样使用广播接收器stackoverflow.com/questions/3767591/…。并在服务中使用它
    • 如何查看用户是否离线?
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 2018-02-12
    • 2021-10-04
    • 2020-07-17
    • 1970-01-01
    • 2013-12-01
    • 2011-12-21
    相关资源
    最近更新 更多