我正在尝试使用 Firebase/消息传递在 React Native 中设置推送通知。当我尝试获取 FCM 令牌时,它仅针对 IOS 抛出此错误。
有时,当我点击并尝试不同的解决方案时它开始工作,但第二天它会再次发送相同的错误。
我已遵循此链接中的所有解决方案。
这是我的代码:
const getFCMToken = async () => {
try {
const fcmToken = await messaging().getToken();
console.log(fcmToken);
} catch (err) {
console.error(err);
}
};
export const requestPermissionAndFCMToken = async () => {
if (Platform.OS === "ios") {
const authStatus = await messaging().requestPermission();
const enabled =
authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
authStatus === messaging.AuthorizationStatus.PROVISIONAL;
if (enabled) {
getFCMToken();
}
} else {
const authStatus = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS,
);
if (authStatus === "granted") {
getFCMToken();
}
}
};
我花了 3 天来修复它,它对我来说绝对工作得很好。
您需要向 ios/AppDelegate.mm 添加更多代码,如下所示:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[FIRApp configure];
[application registerForRemoteNotifications]; // <--- Add this Line
...
}
您还需要向 ios/AppDelegate.mm 添加另一个函数:
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[FIRMessaging messaging].APNSToken = deviceToken;
}