【问题标题】:Flutter + Firebase - Check User PresenceFlutter + Firebase - 检查用户状态
【发布时间】:2021-07-30 10:41:10
【问题描述】:

我正在尝试从数据库(Firebase 实时数据库)中删除离开或已断开连接的用户。我进行了搜索,发现与此相关的唯一资源是: https://firebase.google.com/docs/firestore/solutions/presence

该链接是一个网络解决方案,我已尝试采用该概念以使其发挥作用:

  @override
  void initState() {
    super.initState();
    checkConnection();
  }

  checkConnection() {
    databaseReference.child('.info/connected').onValue.listen((data) {
      if (data.snapshot.value == false) {
        return;
      }
      databaseReference
        .child('games')
        .child(inviteCode)
        .child("players")
        .child(playerID)
        .onDisconnect()
        .remove();
    });
  }

上面的代码似乎不起作用。我已经尝试在 iOS 模拟器上测试它。

我没有使用 Firebase 身份验证器。我只是将用户直接添加到实时数据库中,结构如下:

games { inviteCodehere: { players: {-M_AUmwDhQBzFdPL1lsE: {name: saad, score: 0 } } } }

如果有人可以指导我,将不胜感激。有没有一种方法可以定义用户离开多长时间的触发器?如果不是,默认值是多少。谢谢

【问题讨论】:

    标签: firebase flutter firebase-realtime-database


    【解决方案1】:

    你如何测试它是否工作?

    它可能需要一些时间才能被触发。因为您还会搜索一些内容来表明用户离开了多长时间,所以this 可能会对您有所帮助。

    您可以将onDisconnect 事件和定期的is alive 时间戳结合起来,每次用户在应用中执行某项操作时,您都会将其保存到数据库中。

    用于 Flutter 的 RealtimeDatabase SDK 仍处于测试阶段,因此我推荐 is alive 解决方案,如果有人在特定时间离开时您需要删除一些数据。创建一个云函数并query 早于特定时间的时间戳并删除与它们相关的数据。

    【讨论】:

      猜你喜欢
      • 2018-09-23
      • 2022-01-19
      • 2017-12-05
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2018-11-15
      • 2016-12-23
      相关资源
      最近更新 更多