You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成Firebase后iOS端推送通知失效问题咨询

问题核心说明

这个报错的本质是iOS端尚未获取到APNs设备令牌时,就提前调用了FCM令牌的获取接口,导致生成的FCM令牌无法绑定APNs通道,最终无法正常接收APNs推送。

排查解决步骤
  • 第一步:校验Xcode基础配置

    • 打开Xcode项目的Signing & Capabilities面板,确认已添加Push Notifications能力
    • 确认已添加Background Modes能力,且勾选了Remote notifications选项
    • 确认当前应用的Bundle ID与Firebase控制台中注册的iOS应用Bundle ID完全一致,且Firebase控制台的iOS应用配置页已上传正确的APNs证书或APNs认证密钥
  • 第二步:调整FCM令牌的获取时机

    • 禁止在App初始化启动阶段直接调用getToken()获取FCM令牌,需确保先完成推送权限申请、APNs注册完成后再触发FCM令牌获取
    • 推荐代码逻辑参考:
    import messaging from '@react-native-firebase/messaging';
    
    // 先申请推送权限
    const requestUserPermission = async () => {
      const authStatus = await messaging().requestPermission();
      const enabled = authStatus === messaging.AuthorizationStatus.AUTHORIZED;
      if (enabled) {
        // 权限同意后再获取FCM令牌
        const fcmToken = await messaging().getToken();
        // 后续处理FCM令牌的上报等逻辑
      }
    }
    
    • 同时监听messaging().onTokenRefresh()事件,在令牌刷新时自动更新服务端存储的FCM令牌
  • 第三步:校验iOS原生层配置

    • 检查ios/AppDelegate.m文件,确认已正确引入Firebase头文件,且在didFinishLaunchingWithOptions方法中调用了[FIRApp configure]
    • 如自定义过APNs相关代理方法,需确认已将获取到的APNs令牌传递给Firebase Messaging:
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
      [FIRMessaging messaging].APNSToken = deviceToken;
    }
    
  • 第四步:清理缓存重新构建

    • 不要使用iOS模拟器测试推送功能,模拟器无法获取APNs令牌,必须使用真机测试
    • 执行以下命令清理依赖缓存重新构建:
    rm -rf ~/Library/Developer/Xcode/DerivedData
    cd ios && rm -rf Pods Podfile.lock && pod install
    
    完成后重新运行项目测试即可。
补充说明

如果调整后首次启动仍出现该警告,可在APNs注册完成后主动调用一次messaging().getToken()刷新FCM令牌即可,后续生成的FCM令牌即可正常绑定APNs通道,不影响推送接收。

内容的提问来源于stack exchange,提问作者Chris Okebata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:54:01