我目前正在我的新项目中使用推送通知,因此我正在尝试生成推送 token 。我的问题是,这些什么时候到期?我将每个用户的推送 token 存储在我的 Firebase 数据库中,但我知道这些 token 会自行过期/重新生成。所以我的问题是,保持推送 token 最新的最佳方法是什么?
我会在每次用户导航到他们的个人资料时都这样做吗?:
let token = FIRInstanceID.instanceID().token()
ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token])
你看,截至目前,我要求用户在注册后立即允许推送通知,但不知何故,即使我拒绝了请求,它似乎仍会生成 token ID。所以我的问题是,我怎样才能更新这个 token ID?我必须在 AppDelegate 中执行此操作吗?
谢谢。非常感谢您的帮助!
最佳答案
要将 token 正确存储在数据库中,您需要处理两种情况:
- 应用启动时
- token 刷新时
第一个get the current token在应用程序/主视图上通过调用 FirebaseInstFIRInstanceID.instanceID().token()
开始,例如 viewDidLoad
:
if let token = FIRInstanceID.instanceID().token() {
ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token])
}
由于当前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
关于ios - Swift FIRMessaging 推送通知 token 重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39975953/