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

React Native应用上传App Store后iOS推送不生效如何解决

问题根因

Ad-hoc签名(diawi分发属于这类)下推送正常、App Store正式版推送失效是iOS推送的典型环境配置错误:iOS APNs推送分沙箱、生产两套完全隔离的环境,开发/Ad-hoc包走沙箱环境,App Store/TestFlight包走生产环境,两套环境的证书、网关、device token完全不通用,只要有一处配置混用就会出现正式版推送失效。

修复步骤

按以下优先级逐一排查:

  • 检查推送证书与环境匹配
    • 确认推送服务端为正式版App配置的是生产环境APNs证书,证书同时包含公钥和私钥,未过期,没有混用沙箱开发证书。
    • 不要在@react-native-community/push-notification-ios的端上代码里硬编码沙箱环境配置,该库会在Release构建时自动切换到生产环境。
  • 校验苹果开发者后台配置
    • 登录苹果开发者账号,找到对应App的App ID配置,确认Push Notifications能力下的生产环境SSL证书状态为有效,若已过期或未配置,重新生成生产推送证书。
    • 重新生成App Store类型的描述文件(mobileprovision):开启推送能力后必须更新描述文件,旧描述文件不会包含推送权限配置,打包后会缺失推送entitlements。
  • 检查Xcode项目配置
    • 打开iOS原生项目,选中主target进入Signing & Capabilities页,确认Release构建模式下已添加Push Notifications能力,同时在Background Modes中勾选Remote notifications选项。
    • 检查项目的.entitlements配置文件,确认Release环境下aps-environment字段值为production,正确配置参考:
      <key>aps-environment</key>
      <string>production</string>
      
    • 若使用自动签名,确认Xcode拉取的是更新后的App Store描述文件,不要使用缓存在本地的旧描述文件。
  • 排查服务端推送逻辑
    • 确认服务端给正式版用户发推送时,请求的是APNs生产网关地址,不要请求沙箱网关地址。
    • 确认服务端区分存储沙箱、生产环境的device token:两套环境下发的device token完全不通用,沙箱token在生产网关发推送会直接被判定为无效。
  • 验证方式
    • 优先打TestFlight包做验证:TestFlight运行环境和App Store正式版完全一致,如果TestFlight包推送正常,说明端上配置无问题,故障点在服务端的环境判断逻辑;如果TestFlight包也无法收到推送,优先重新校验证书和entitlements配置。

内容的提问来源于stack exchange,提问作者Rohit Aggarwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:15:59