这个问题通常出现在Firebase Cloud Messaging(FCM)应用程序无法访问APNS密钥的情况下。解决此问题的最佳方法是通过Firebase控制台上传APNS密钥。在指定的服务器端口上使用APNS密钥,并在配置文件中启用Cloud Messaging。还可以在代码中手动设置APNS令牌,以利用Firebase与APNS之间的兼容性。下面是一些代码示例,可以用来手动设置APNS令牌:
Swift:
let deviceTokenString = "原始APNS令牌"
let deviceToken = deviceTokenString.trimmingCharacters(in: .whitespacesAndNewlines).replacingOccurrences(of: " ", with: "")
Messaging.messaging().apnsToken = Data(base64Encoded: deviceToken)
Objective-C:
NSString *deviceTokenString = @"原始APNS令牌";
NSString *cleanedTokenString = [deviceTokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
cleanedTokenString = [cleanedTokenString stringByReplacingOccurrencesOfString:@" " withString:@""];
NSData *deviceTokenData = [NSData dataWithBytes:[cleanedTokenString UTF8String] length:strlen([cleanedTokenString UTF8String])];
[FIRMessaging messaging].APNSToken = deviceTokenData;
通过手动设置APNS令牌,您可以解决在检索FCM令牌之前未设置APNS设备令牌的问题,从而实现成功的通知传递。