Firebase - 是否可以为应用连接状态设置“Cloud Listener”?

时间:2017-09-22 18:56:41

标签: android firebase firebase-realtime-database

我正在构建一款Android游戏,要求用户在玩游戏时在线。我想检测游戏是否在播放时被中断(互联网连接丢失\设备被关闭等等),如果是 - 这应该被认为是用户的损失,并且是写在数据库中。 我现在唯一想到的就是离线保存这种损失,并在用户重新上线时更新。

我知道我可以检测到this之类的应用连接状态,但它无济于事,因为我之后只能执行离线操作。我也知道我可以像在this那样在数据库中编写事件,但它对我没有帮助,因为游戏中断后没有孩子被更新。

我的问题是:有没有办法编写可以收听特定应用连接状态的云功能?如果没有这种方式,我有哪些其他选择?

1 个答案:

答案 0 :(得分:1)

您可以使用onDisconnect()处理程序。这是您在连接应用程序时运行的一段代码,它设置服务器在检测到应用程序已断开连接时运行的操作。

文档中的一个简单示例:

DatabaseRef presenceRef = FirebaseDatabase.getInstance().getReference("disconnectmessage");
// Write a string when this client loses connection
presenceRef.onDisconnect().setValue("I disconnected!");

但我建议您阅读完整的documentation on managing presence以获取更多示例。

通过此操作,您可以在onDisconnect处理程序的操作上触发Cloud Function触发器,然后更新游戏状态。

请注意,如果发生非干净连接,服务器可能需要几分钟检测到丢失的连接。