【发布时间】: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