首页 > 解决方案 > FCM:无效参数,iOS 的令牌原因

问题描述

我正在将 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];

}

我在模拟器上做这个,有影响吗?

标签: iosfirebasepush-notificationfirebase-cloud-messaging

解决方案


这可能是您的后端错误。

FCM Token 由 Firebase 生成,Firebase 单独处理 FCM Token 和 iOS Device Token 之间的映射。因此,当您使用 FCM 时,您只关心 FCM 令牌,因此这绝对是您应该发送的。但是,出于某种原因,您的后端似乎需要一个实际的 iOS 设备令牌。

因此,要修复此错误,您必须更改后端代码(您没有提供,所以我无法提供帮助),因此它不需要实际的 iOS 设备令牌,而是需要 FCM 令牌。

然后,要“使用 FCM”,您需要更改后端以停止直接与 Apple 的推送通知服务器(或您当前使用的任何其他需要实际 iOS 设备令牌的服务)交互,并开始与 FCM API 交互,使用文档中列出的任何方法。FCM API 将使用 FCM 令牌来识别向哪个设备发送推送通知。


推荐阅读