“applicationWillTerminate”没有被迅速调用
Posted
技术标签:
【中文标题】“applicationWillTerminate”没有被迅速调用【英文标题】:"applicationWillTerminate" is not called in swift 【发布时间】: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 请求和响应 【参考方案1】:您的 api 或 firebase 调用必须在后台模式下执行。转到链接,您将找到如何创建后台任务。
Can I make an api call when the user terminates the app?
【讨论】:
以上是关于“applicationWillTerminate”没有被迅速调用的主要内容,如果未能解决你的问题,请参考以下文章
“applicationWillTerminate”没有被迅速调用
applicationWillTerminate 何时调用,何时不调用
Swift - 在 applicationWillTerminate 中调用本地通知方法
为啥 UIWebView 不在我的应用程序委托中的 applicationWillTerminate: 处加载 NSURLRequest?