React Native iOS端FCM获取Token报错:需先注册远程消息
解决React Native iOS FCM getToken报错:messaging/unregistered
错误提示明确指出,iOS环境下调用getToken前必须先调用messaging().registerDeviceForRemoteMessages()——iOS需要显式完成设备到APNs的注册流程,FCM才能生成并返回有效Token,你的代码缺少这一关键步骤,导致报错。
修改后的完整代码
import messaging from '@react-native-firebase/messaging'; export async function requestUserPermission() { const authStatus = await messaging().requestPermission(); const enabled = authStatus === messaging.AuthorizationStatus.AUTHORIZED || authStatus === messaging.AuthorizationStatus.PROVISIONAL; if (enabled) { console.log('Authorization status:', authStatus); // iOS专属:先注册远程消息,再请求Token await messaging().registerDeviceForRemoteMessages(); getFcmToken(); } } const getFcmToken = async () => { try { const fcmToken = await messaging().getToken(); console.log("fcm token generated", fcmToken); } catch (error) { console.log("Error in fcm token", error); alert(error?.message); } };
额外注意要点
registerDeviceForRemoteMessages()是iOS平台专属方法,Android调用不会产生负面影响,无需额外做平台判断。- 确保iOS项目已完成FCM基础配置:Firebase控制台上传APNs认证密钥、Xcode开启推送通知能力、
Info.plist添加推送权限描述。 - 若仍报错,检查
AppDelegate文件中是否正确实现了FCM原生回调(比如didRegisterForRemoteNotificationsWithDeviceToken方法)。
内容的提问来源于stack exchange,提问作者Shubham Aggarwal
相关产品推荐
相关产品推荐

