【问题标题】:"applicationWillTerminate" is not called in swift“applicationWillTerminate”没有被迅速调用
【发布时间】:2019-12-31 07:21:23
【问题描述】:

我正在开发一个聊天应用程序,我必须在其中维护用户“离线”或“在线”状态。我希望当用户进入后台时用户状态将处于离线状态,并且如果用户将终止该应用程序。在我的后台应用程序运行正常。但是当我杀死应用程序时它不能正常工作。我的代码是:-

func applicationDidEnterBackground(_ application: UIApplication) {
    if let uid: Int = UserDefaults.standard.value(forKey: "User_Id") as? Int{
          reference(.User).whereField(kREGISTERUSEID, isEqualTo: "\(uid)").getDocuments { (snapshot, err) in
              if let err = err {
              }
              else {
                  let document = snapshot!.documents.first
                  document!.reference.updateData([
                      kISONLINE: false
                  ])
              }
          }
    }
}
 func applicationDidBecomeActive(_ application: UIApplication) {
    if let uid: Int = UserDefaults.standard.value(forKey: "User_Id") as? Int{
            reference(.User).whereField(kREGISTERUSEID, isEqualTo: "\(uid)").getDocuments { (snapshot, err) in
                if let err = err {
                }
                else {
                    let document = snapshot!.documents.first
                    document!.reference.updateData([
                        kISONLINE: true
                    ])
                }
            }
    }

}

func applicationWillTerminate(_ application: UIApplication) {
    if let uid: Int = UserDefaults.standard.value(forKey: "User_Id") as? Int{
                reference(.User).whereField(kREGISTERUSEID, isEqualTo: "\(uid)").getDocuments { (snapshot, err) in
                    if let err = err {
                    }
                    else {
                        let document = snapshot!.documents.first
                        document!.reference.updateData([
                            kISONLINE: false
                        ])
                    }
                }
          }

}

我在这里使用 firebase。另外,如果用户在 20 秒内不进入聊天屏幕或不向任何人(如whatsapp)发送消息,我想让用户离线。

请帮我实现它。谢谢

【问题讨论】:

  • 您不应该在应用程序终止方法中调用任何 api,因为在该应用程序中没有太多时间来执行 api 请求和响应

标签: swift firebase application-lifecycle


【解决方案1】:

您的 api 或 firebase 调用必须在后台模式下执行。转到链接,您将找到如何创建后台任务。

Can I make an api call when the user terminates the app?

【讨论】:

    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多