如何在应用程序聊天xcode中断开非活动用户的连接



我正试图找到一种方法,当应用程序在后台超过120秒时,断开活动用户的应用程序聊天连接,但计时器似乎在后台不起作用,这是代码

func sceneDidEnterBackground(_ scene: UIScene) {
Timer.scheduledTimer(withTimeInterval: 3, repeats: false) { (timer) in
print("start the logout code")
}
}

在代码中,您可以看到3秒钟,因为即使是3秒钟也不起作用。你能告诉我什么是我可以使用的最好方法吗?这样我就可以注销用户,而不会一直在在线列表中显示他?

我自己在开发一个聊天应用程序,遇到这个问题花了很长时间才找到解决方法。

我注意到,后台不会给我很长时间注销用户,所以我决定用户或应用程序何时进入:

  1. sceneDidDisconnect

在这种情况下,我将调用一个使用户离线的函数。

if Auth.auth().currentUser != nil {
print("put offline")
user.logout()
}
  1. sceneDidBecomeActive

在这种情况下,我将调用一个函数,让用户重新联机。

if Auth.auth().currentUser != nil {
user.offline()
}
  1. applicationWillTerminate

当应用程序终止时,我调用一个函数,该函数将从数据库中放入用户Offline,然后放入Logout,最后放入Delete the user

我希望这个技巧能对你有所帮助。

后台工作非常有限,我们不能以100%的概率执行这种计算。这个逻辑最好留给后端

最新更新