如果应用程序进入后台模式,则会触发Ondisconnect

我有以下代码:

func OnlineStatus(userID: String){ handle = Auth.auth().addStateDidChangeListener { (auth, user) in if let user = user { // User is signed in. self.UID = user.uid self.connectedRef.observe(.value, with: { snapshot in if let connected = snapshot.value as? Bool, connected { // print("############################ Connected") self.ref.child(self.UID!).child("OnlineStatus").setValue("ON") } else { // print("############################ Not connected") self.ref.child(self.UID!).child("OnlineStatus").setValue("OFF") } self.ref.child(self.UID!).child("OnlineStatus").onDisconnectSetValue("OFF") }) }} } 

该函数将在viewWillAppear中触发。 我们的想法是构建一个简单的在线系统。 出于某种原因,当我将应用程序发送到后台并且让我的iPhone进入睡眠状态时,onDisconnect会被触发。 我实际上希望只有当用户退出或丢失互联网连接时,在线状态才会关闭。 我的代码或设置有什么问题?

当客户端与Firebase数据库服务器断开连接时会触发onDisconnect事件,并且当您的应用程序转到后台时会发生这种情况。 Firebase的观点与开车进入隧道的用户和手机进入睡眠状态之间没有区别。 在这两种情况下,客户端和服务器之间的连接都会被删除,因此onDisconnect()会触发。

您通常最终会使用.info/connectedonDisconnect()来设置上次查看用户的值,同时使用onAuthStateChanged()设置正在登录的用户的状态标志。然后显示列表用户首先按照他们最近活动的顺序显示已登录的用户。