我有以下代码:
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 会被触发。实际上,我希望只有当用户注销或失去互联网连接时,在线状态才会关闭。我的代码或设置有什么问题?
The onDisconnect
当客户端与 Firebase 数据库服务器断开连接时,事件会触发,并且当您的应用程序转到后台时,就会发生这种情况。从 Firebase 的角度来看,用户在驶入隧道的火车上和他们的手机进入睡眠状态之间没有区别。在这两种情况下,客户端和服务器之间的连接都会断开,因此onDisconnect()
fires.
您通常最终会使用.info/connected
and onDisconnect()
设置用户最后一次看到时间的值,同时使用onAuthStateChanged()
设置正在登录的用户的状态标志。然后,您可以通过首先按照最近的活动时间顺序显示已登录的用户来显示用户列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)