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

Swift 如何在应用程序聊天xcode中断开非活动用户的连接,swift,xcode,swift5,Swift,Xcode,Swift5,我试图找到一种方法,当应用程序在后台超过120秒时,断开活动用户与应用程序聊天的连接,但是计时器似乎在后台不工作,这是代码 func sceneDidEnterBackground(_ scene: UIScene) { Timer.scheduledTimer(withTimeInterval: 3, repeats: false) { (timer) in print("start the logout code")

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

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

在代码中,您可以看到3秒,因为即使是3秒,它也无法工作。你能告诉我什么是我可以使用的最好的方法,这样我就可以注销用户,而不让他继续出现在在线列表中吗?

背景工作非常有限,我们无法以100%的概率进行此类计算。这个逻辑最好放在后端

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

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

  • sceneddisconnect
  • 在这种情况下,我将调用一个函数,该函数将使用户脱机

    if Auth.auth().currentUser != nil {
                print("put offline")
                user.logout()
    }
    
  • sceneDidBecomeActive
  • 在本例中,我将调用一个函数,该函数将使用户重新联机

    if Auth.auth().currentUser != nil {
                user.offline()
    }
    
  • 应用程序将终止
  • 当应用程序终止时,我调用一个函数,该函数将使用户
    脱机
    ,然后
    注销
    用户,最后
    从数据库中删除用户


    我希望这项技术能对你有所帮助。

    当你在后台时,你不能做任何事情,你被暂停。如果您想注销用户,因为用户在后台,请在用户进入后台时注销该用户。@matt没有意义,因此如果用户误进入后台,我会注销他吗?我明白,我只是想给人一种现实的感觉。不存在在用户进入后台120秒后做某事的情况。事情就是这样。谢谢你花时间给出答案。!你可以:-1)编辑你的答案,这样答案就更详细了。2) 解释你想用这个答案达到什么目的,以及你想说什么。?有关更多信息,请参见帮助中心中的“如何写出好答案”(如何提问:)