2017-03-01 31 views
3

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

编辑:为了使它简短,可以说每个用户都有一个图像。图像在用户连接时应为绿色,断开时应为灰色。

编辑2:思考完后,很难准确地在客户端服务器上呈现连接用户。这就是为什么如果没有人有不同的解决方案,我应该添加另一台可以执行服务器端代码的服务器。由于大量的服务器,我想知道我应该使用哪个服务器。服务器应运行一个简单的函数,该函数仅检查用户是否已连接或断开连接并可与Firebase进行通信。如果我是正确的,它应该看起来像这样:servers

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

+0

您可以试试https://firebase.google.com/docs/database/ios/offline-capabilities#section-connection-state –

+0

我知道这个选项。但是,如果用户没有上网,用户应该如何上传数据到服务器?当用户重新启用互联网时,我知道该功能会执行,但这不是最好的方法。 – NoKey

+0

这个函数在服务器上注册回调函数,所以当连接丢失时 - 它会被执行。但由于iOS限制,用户离开应用程序后连接立即丢失 –

回答

1

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

从火力地堡,文档:

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

在应用程序中,我使用onDisconnectRemoveValue,当我关闭应用程序时,用户将自己从大厅中删除。不确定在飞机模式下如何工作,但从文档看起来应该没有问题。

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

编辑:所以我检查了onDisconnect当你把设备放在飞机模式,它的工作原理!问题在于,它大约在1:30分左右将用户删除,所以如果您阅读文档或询问支持,您可能(并且可能)能够找到一种方法来设置您想要的时间。

+0

Yyes这是斗争,我不知道有飞机模式延迟...谢谢! – NoKey

相关问题