Swift FIRMessaging推送通知令牌重置
我目前正在使用推送通知工作,因此我正在尝试生成推送令牌。 我的问题是什么时候这些到期? 我将每个用户推送令牌存储在我的Firebase数据库中,但是我知道这些令牌过期/重新生成自己。 所以我的问题是,持续推送令牌是最新的最好方法是什么?
每当用户导航到他们的个人资料时,我是否会简单地执行此操作?
let token = FIRInstanceID.instanceID().token() ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token])
你看,现在我要求用户在注册后立即允许推送通知,但不知怎的,它似乎仍然会生成一个令牌ID,即使我拒绝请求。 所以我的问题是,我怎么能保持这个令牌ID更新? 我需要在AppDelegate中做这个吗?
谢谢。 帮助非常感谢!
要正确地将令牌存储在数据库中,您需要处理两种情况:
- 当应用程序启动
- 当令牌刷新
首先通过调用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