我试图在应用程序终止时删除用户,但这不起作用。 如果我有一个匿名用户登录,并且该用户关闭了应用,我不希望 Firebase 保存匿名用户。我想删除它。这是我当前的代码。提前谢谢你
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
if let users = Auth.auth().currentUser {
if !users.isAnonymous {
return
}else {
users.delete(completion: { (error) in
if error != nil {
print(error!)
return
}
try! Auth.auth().signOut()
print("Anonymous user deleted")
})
}
}
}
我在ViewDidLoad中添加了listerners到我希望从中删除用户的屏幕。喜欢这个:
NotificationCenter.default.addObserver(self, selector: #selector(suspending), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(suspending), name: NSNotification.Name.UIApplicationWillTerminate, object: nil)
然后我有这个功能来删除用户:
@objc func suspending () {
if Auth.auth().currentUser != nil {
let user = Auth.auth().currentUser
user?.delete { error in
if let error = error {
print("An error happened delting the user.")
} else {
print("Account succesfully deleted.")
}
}
}
}
唯一可能发生的情况是,您需要重新进行身份验证。如果是这种情况,那么按照这个答案来实现它
Hei @pprevalon,我一直在尝试通过更新 appWillTerminate 上的值来实现与您相同的目标,但这是我从其他成员那里发现的
此方法的实现有大约五秒钟的时间来执行任何任务并返回。如果该方法在时间到期之前未返回,则系统可能会完全终止该进程。
仍在尝试找出一种方法,因为调用func appWillTerminate 会发生 1/10 次,但我不能指望这一点。
附言除此之外,请考虑一下:如果用户首先从活动 -> 后台切换,然后是后台 -> kill 应用程序,则永远不会调用该方法。