Swift FIRMessaging推送通知令牌重置

我目前正在使用推送通知工作,因此我正在尝试生成推送令牌。 我的问题是什么时候这些到期? 我将每个用户推送令牌存储在我的Firebase数据库中,但是我知道这些令牌过期/重新生成自己。 所以我的问题是,持续推送令牌是最新的最好方法是什么?

每当用户导航到他们的个人资料时,我是否会简单地执行此操作?

let token = FIRInstanceID.instanceID().token() ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token]) 

你看,现在我要求用户在注册后立即允许推送通知,但不知怎的,它似乎仍然会生成一个令牌ID,即使我拒绝请求。 所以我的问题是,我怎么能保持这个令牌ID更新? 我需要在AppDelegate中做这个吗?

谢谢。 帮助非常感谢!

要正确地将令牌存储在数据库中,您需要处理两种情况:

  1. 当应用程序启动
  2. 当令牌刷新

首先通过调用FirebaseInst FIRInstanceID.instanceID().token()来获取app / main视图上的当前标记 ,例如viewDidLoad

 if let token = FIRInstanceID.instanceID().token() { ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token]) } 

由于当前令牌可能尚未生成,因此您需要在此代码中处理nil

然后通过执行tokenRefreshNotification 来监视对令牌的tokenRefreshNotification

 func tokenRefreshNotification(notification: NSNotification) { if let refreshedToken = FIRInstanceID.instanceID().token() { ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":refreshedToken]) } } 

另请参阅我给Android类似用例的这个答案: 更新应用更新时更新Firebase实例ID