【问题标题】:Change value after period of time in Firebase在 Firebase 中一段时间​​后更改值
【发布时间】:2017-03-01 09:30:24
【问题描述】:

我有一个大厅,我希望用户在其中保持同步。因此,当用户在应用程序运行时关闭互联网时,他应该被删除。我知道 Firebase 不支持服务器端编码,所以编码需要在客户端。 How to delete firebase data after "n" daysDelete firebase data older than 2 hours 的答案没有回答这个问题,因为他们希望用户在线并且他们有互联网连接。所以我的问题是是否可以在没有互联网的情况下删除用户?我想也许让用户每 5 秒更新一次值是一个想法,当更新没有完成时,该大厅中的其他用户会删除播放器。这种方式不好,因为每个玩家每 5 秒需要检索和上传大量数据。解决这个问题的最佳方法是什么?

编辑:简而言之,假设每个用户都有一张图片。用户连接时图像应为绿色,断开连接时图像应为灰色。

编辑2:仔细考虑之后,在客户端服务器上准确呈现连接的用户确实很困难。这就是为什么,如果没有人有不同的解决方案,我应该添加另一个可以执行服务器端代码的服务器。由于服务器数量众多,我想知道我应该使用哪个服务器。服务器应该运行一个简单的函数,它只检查用户是连接还是断开连接,并且可以与 Firebase 通信。如果我是正确的,它应该是这样的:

但服务器也需要直接与用户通信。我完全不知道从哪里开始。

【问题讨论】:

  • 我知道这个选项。但是,如果用户没有互联网,他们应该如何将数据上传到服务器呢?我知道当用户重新启用互联网时该功能将执行,但这不是最好的方法。
  • 这个函数在服务器上注册回调,所以当连接丢失时 - 它会被执行。但是由于 iOS 的限制,用户离开应用后连接会立即丢失
  • >当您建立 onDisconnect() 操作时,该操作将存在于 Firebase 实时数据库服务器上。服务器检查安全性以确保用户可以执行请求的写入事件,并在它无效时通知您的应用程序。然后服务器监视连接。如果在任何时候连接超时,或者被实时数据库客户端主动关闭,服务器会再次检查安全性(以确保操作仍然有效),然后调用事件。
  • "每个用户都有一个图像。当用户连接时图像应该是绿色的,断开连接时图像应该是灰色的" Firebase 文档中的 Presence 应用正是这样做的:firebase.google.com/docs/database/ios/…

标签: swift firebase


【解决方案1】:

如果我没有完全错,您应该可以使用 onDisconnect。

来自 Firebase,文档:

onDisconnect 的工作原理: 建立 onDisconnect() 操作后,它位于 Firebase 实时数据库服务器上。服务器检查安全性以确保用户可以执行请求的写入事件,并在它无效时通知客户端。然后服务器监视连接。如果在任何时候超时,或者被客户端主动关闭,服务器会再次检查安全性(以确保操作仍然有效),然后调用事件。

在生产中的应用程序中,我使用 onDisconnectRemoveValue,当我关闭应用程序时,用户将自己从大厅中移除。不确定当您将设备置于飞行模式时它是如何工作的,但从文档看来应该没有问题。

有一件事:当你在真实设备上测试它时,模拟器在关闭和打开它时会出现问题,至少我已经安装了。

编辑:所以当您将设备置于飞行模式时,我检查了 onDisconnect,它可以正常工作!问题是,它会在大约 1:30 分钟内删除用户,因此,如果您阅读文档或询问支持,您可能(并且只有可能)能够找到一种方法来设置您想要的时间.

【讨论】:

  • 是的,这就是斗争,我不知道飞行模式有延迟......谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多