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

How to disconnect inactive users in an application chat xcode

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

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

在代码中你可以看到 3 秒,因为即使是 3 秒它也不起作用。您能否提供我可以使用的最佳方法是什么,以便我注销用户而不是继续在在线列表中显示他?

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

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

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

  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

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