我正在构建一款Android游戏,要求用户在玩游戏时在线。我想检测游戏是否在播放时被中断(互联网连接丢失\设备被关闭等等),如果是 - 这应该被认为是用户的损失,并且是写在数据库中。 我现在唯一想到的就是离线保存这种损失,并在用户重新上线时更新。
我知道我可以检测到this之类的应用连接状态,但它无济于事,因为我之后只能执行离线操作。我也知道我可以像在this那样在数据库中编写事件,但它对我没有帮助,因为游戏中断后没有孩子被更新。
我的问题是:有没有办法编写可以收听特定应用连接状态的云功能?如果没有这种方式,我有哪些其他选择?
答案 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触发器,然后更新游戏状态。
请注意,如果发生非干净连接,服务器可能需要几分钟检测到丢失的连接。