我正在将FCM集成到我的iOS应用中。将令牌发送到后端服务器时,我收到此错误:
无效的参数:令牌原因:iOS设备令牌不得超过400个十六进制字符
在我的代码中,我正在将FCM注册令牌发送到服务器。它是否正确?还是应该发送设备令牌?如果是这样,此FCM注册令牌有什么用途?
需要帮助。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
//Get FCM registration token
[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Error fetching remote instance ID: %@", error);
} else {
NSLog(@"Remote instance ID token: %@", result.token);
[UserDefaultUtility setDeviceToken:result.token];
}
}];
}
#pragma mark - FCM delegate
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
// Note: This callback is fired at each app startup and whenever a new token is generated.
NSLog(@"FCM registration token: %@", fcmToken);
[UserDefaultUtility setDeviceToken:fcmToken];
}
我正在模拟器上执行此操作,对它有影响吗?
答案 0 :(得分:0)
这可能是您的后端出错。
FCM令牌由Firebase生成,并且Firebase独自处理FCM令牌和iOS设备令牌之间的映射。因此,当您使用FCM时,您只关心FCM令牌,因此这绝对是您应该发送的内容。但是,出于某种原因,您的后端似乎期望使用实际的iOS设备令牌。
因此,要解决此错误,您必须更改您的后端代码(您未提供该代码,因此我无法提供帮助),以便它不希望使用实际的iOS设备令牌,而希望使用FCM令牌
然后,要“使用FCM”,您需要更改后端以停止与Apple的推送通知服务器(或当前使用的需要实际iOS设备令牌的任何其他服务)直接交互,并开始与FCM API交互而是使用in the docs中列出的任何方法。 FCM API将使用FCM令牌来标识向其发送推送通知的设备。