我目前正在新项目中使用推送通知,因此我正在尝试生成推送令牌。我的问题是,这些什么时候到期?我将每个用户推送令牌存储在我的Firebase数据库中,但我知道这些令牌会自动过期/重新生成。所以我的问题是,保持推送令牌最新的最佳方法是什么?
每次用户导航到他们的个人资料时,我都会这样做吗?:
let token = FIRInstanceID.instanceID().token()
ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token])
你看,到目前为止,我要求用户在注册后立即允许推送通知,但不知怎的,即使我拒绝请求,它仍然会生成令牌ID。所以我的问题是,如何更新此令牌ID?我是否必须在AppDelegate中执行此操作?
感谢。非常感谢帮助!
答案 0 :(得分:1)
要在数据库中正确存储令牌,您需要处理两种情况:
应用/主视图中的第一个get the current token首先调用FirebaseInst FIRInstanceID.instanceID().token()
,例如viewDidLoad
:
if let token = FIRInstanceID.instanceID().token() {
ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token])
}
由于当前令牌可能尚未生成,因此您需要在此代码中处理nil
。
然后 monitor for changes to the token实施tokenRefreshNotification
:
func tokenRefreshNotification(notification: NSNotification) {
if let refreshedToken = FIRInstanceID.instanceID().token() {
ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":refreshedToken])
}
}
另请参阅我给Android的类似用例的回答:Update Firebase Instance ID on app update