Swift Firebase删除应用程序终止时的用户

时间:2017-07-09 17:31:27

标签: ios swift firebase

我试图在应用终止时删除用户,但这不起作用。 如果我有一个匿名用户登录并且用户关闭了应用程序,我不希望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")
                })
            }
        }
    }

2 个答案:

答案 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来实现它