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

APN通知接口返回成功但Expo React Native应用无法接收通知

排查Expo React Native应用无法接收APN通知的步骤

1. 确认设备令牌类型是否正确

  • Expo的getDevicePushTokenAsync()返回的是Expo推送令牌,并非原生APN设备令牌,直接用该令牌调用APN接口无效。托管Expo项目必须通过Expo Push API发送通知;若要直接调用APN,需使用getDeviceTokenAsync(需配置expo-dev-client或转为裸工程)获取原生设备令牌。

2. 检查通知权限状态

  • 调用Notifications.getPermissionsAsync()确认应用已获取通知权限(状态为granted)。
  • 检查iOS设备的系统设置,确保应用的通知权限未被禁用。

3. 匹配APN环境与应用构建环境

  • 测试环境(开发构建)需调用APN沙箱地址api.sandbox.push.apple.com,生产环境(正式构建)对应api.push.apple.com,必须保证接口环境与应用构建环境一致。

4. 验证通知Payload格式

  • 直接调用APN时,Payload需符合苹果规范,核心aps结构示例:
    {
      "aps": {
        "alert": {
          "title": "测试标题",
          "body": "测试内容"
        },
        "sound": "default"
      }
    }
    
  • 避免包含无效字段,否则苹果服务器可能静默丢弃通知。

5. 核对Expo项目配置

  • 检查app.json/app.config.js中的iOS配置,确保bundleIdentifier正确,且开启后台通知权限:
    {
      "ios": {
        "bundleIdentifier": "com.your.app.id",
        "infoPlist": {
          "UIBackgroundModes": ["remote-notification"]
        }
      }
    }
    
  • 托管项目需在Expo Dashboard上传对应环境的APN证书(开发/生产)。

6. 检查设备状态

  • 确保测试设备为真实iOS设备(模拟器无法接收APN通知),且处于联网状态、未开启“请勿打扰”模式。

内容的提问来源于stack exchange,提问作者satya o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:50:36