我试图在应用终止时删除用户,但这不起作用。 如果我有一个匿名用户登录并且用户关闭了应用程序,我不希望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")
})
}
}
}
答案 0 :(得分:0)
Hei @pprevalon,我一直试图通过更新appWillTerminate上的值来实现和你一样的东西,但这是我从其他成员那里发现的东西
您执行此方法大约需要五秒钟才能执行任何任务并返回。如果该方法在时间到期之前没有返回,则系统可以完全终止该过程。
仍然试图找出一种方法,因为它会发生1/10次调用func appWillTerminate,但我不能指望它。
P.S。除此之外,请考虑一下:如果用户从活动切换 - >首先是背景,然后是背景 - >杀死app,该方法永远不会被调用。
答案 1 :(得分:0)
我在ViewDidLoad中添加了侦听器到要从中删除用户的屏幕。像这样:
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.")
}
}
}
}
唯一可能发生的事情是,您需要重新进行身份验证。如果是这种情况,那么也要遵循this answer来实现它