我有一个Unity移动的多人游戏,使用Firebase进行配对,当用户按下播放按钮时,它会将他们添加为可用于Machmake
mDatabaseRef.Child("matchMake").Child(auth.CurrentUser.UserId).Child("playerName").SetValueAsync(auth.CurrentUser.DisplayName);
当用户按下取消游戏搜索按钮时删除它们,但我也想在他们关闭应用程序时删除它们(即使他们没有按下取消游戏按钮),使用
private void OnApplicationQuit()
{
removePlayer();
}
void OnApplicationPause(bool pause)
{
removePlayer();
}
public void removePlayer()
{
mDatabaseRef.Child("matchMake").Child(auth.CurrentUser.UserId).RemoveValueAsync();
}
所以我想要的是让他们在matchmake,如果他们在后台添加应用程序(并考虑通过推送通知通知他们找到游戏),但如果他们从App Switcher关闭应用程序,则删除这些通知(甚至如果系统退出它以释放资源)问题是,虽然我可以从应用程序进入后台时调用的OnApplicationPause中删除“RemovePlayer”,如果应用程序从应用程序切换器关闭,它不会调用OnApplicationQuit,根据文档,这种行为是正确的
警告:如果用户在移动的平台上挂起应用程序,操作系统可能会退出应用程序以释放资源。在这种情况下,Unity可能无法调用此方法,具体取决于操作系统。在移动平台上,最好不要依赖此方法来保存应用程序的状态。
有什么办法能让我如愿吗?
谢谢!!!
1条答案
按热度按时间f3temu5u1#
Firebase Realtime Database具有所谓的
onDisconnect
处理程序,允许您在联机时向服务器发送写入指令,然后服务器在检测到客户端已断开连接时执行该指令。由于
onDisconnect
没有针对Unity的文档,因此我建议查看Android文档以了解onDisconnect
的工作原理,然后根据onDisconnect
in Unity的参考文档实现它。