【问题标题】:How to disconnect inactive users in an application chat xcode如何在应用程序聊天 xcode 中断开非活动用户的连接
【发布时间】:2020-09-29 22:26:01
【问题描述】:

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

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

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

【问题讨论】:

  • 当你在后台时,你不能做任何事情,你被暂停了。如果您想因为用户在后台而注销用户,请在用户进入后台时注销用户。
  • @matt 没有意义,所以如果用户错误地进入后台,我会注销他吗?那样没有意义
  • 我明白,我只是想给人一种现实感。在用户进入后台后 120 秒内没有做某事这样的事情。就是这样。

标签: swift xcode swift5


【解决方案1】:

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

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

  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 从数据库中。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您抽出宝贵时间提供答案。!你能:- 1)编辑你的答案,以便详细回答。 2)用这个答案解释你想达到什么目的以及你想说什么。?有关更多信息,请参阅如何在帮助中心写出好的答案(如何提问:stackoverflow.com/help/how-to-answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多