有谁知道如何强制刷新FCM生成的注册令牌?我最近才尝试将我的项目从GCM迁移到FCM。
Firebase网站上的文档提到使用以下方式生成令牌:
// Get the default token
// The first time you call this, the token may not be available, in which case
// the SDK returns nil.
// Once the token is fetched from the server, the SDK posts a token refresh
// notification that you can listen for in order to access the new token.
NSString *token = [[FIRInstanceID instanceID] token];
但看起来我只获得了在我致电FIRInstanceID.instanceID().token()
答案 0 :(得分:1)
如果实例ID无效,应用程序可以请求新的实例ID并将其发送到应用服务器。要证明实例ID的所有权并允许服务器访问与应用程序关联的数据或服务,请调用[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]。
https://firebase.google.com/docs/reference/ios/firebaseinstanceid/interface_f_i_r_instance_i_d
答案 1 :(得分:0)
可能会迟到,但如果有任何帮助,其他任何人都可以参考我的答案。我同意@mKane,但我想在他的回答中添加更多内容。 如果您已重置instanceID或删除了令牌,则可以调用
if (![[FIRInstanceID instanceID] token]) {
[[FIRInstanceID instanceID] tokenWithAuthorizedEntity:_gcmSenderId scope:kFIRInstanceIDScopeFirebaseMessaging options:_registrationOptions handler:^(NSString * _Nullable token, NSError * _Nullable error) {
// Fetch the token or error
}];
如果token为nil,则在“tokenRefreshNotification”方法中等待令牌,如果[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]中的令牌为nil,则会自动调用该方法。然后,您可以使用“tokenRefreshNotification”方法捕获令牌并使用它。
有关如何使用此方法,请参阅我的回答here
答案 2 :(得分:0)
在Swift 5中强制刷新令牌:
InstanceID.deleteID(InstanceID.instanceID())(handler: {_ in})
如文档所述: 此方法还会触发获取新实例ID和Firebase Messaging作用域令牌的请求。准备好新ID和令牌后,请收听kFIRInstanceIDTokenRefreshNotification。
然后获取新令牌,只需照常进行即可:
InstanceID.instanceID().instanceID { (result, error) in
if error == nil{
let newToken = result.token
}
}