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

Expo Notifications:iOS端无法接收推送通知问题排查

iOS端无法接收Expo推送通知的排查方案

添加experienceId本身不会导致推送接收异常,但如果该参数配置错误,会生成与应用不匹配的推送令牌,进而导致通知无法送达。结合你的情况,以下是关键排查点:

1. 验证experienceId的正确性

  • 确保@username/app-slug完全匹配app.json中的owner和slug字段,注意大小写敏感。如果是团队项目,owner应为团队账号名称而非个人账号。
  • 若使用Expo Go测试,experienceId可省略(SDK会自动识别);但裸机构建、自定义开发构建必须正确指定该参数。

2. 检查iOS推送证书与权限配置

  • 登录Apple开发者后台,确认App ID已启用Push Notifications权限,且对应的APNs开发/生产证书未过期、未被吊销。
  • 使用expo credentials:manager命令查看当前推送证书状态,若存在异常,重新生成并同步证书。
  • 确认构建环境与推送环境匹配:开发构建(Expo Go/自定义开发包)对应APNs开发环境,生产构建(App Store/Ad Hoc)对应生产环境。Expo推送API通常会自动根据令牌判断环境,但若手动指定useProduction参数,需确保与构建环境一致。

3. 配置前台通知处理逻辑

iOS应用在前台运行时,默认不会显示通知弹窗,需添加以下代码启用前台通知展示:

Notifications.setNotificationHandler({
  handleNotification: async () => ({
    shouldShowAlert: true,
    shouldPlaySound: true,
    shouldSetBadge: true,
  }),
});

4. 二次验证推送令牌与推送命令

  • 使用Expo CLI命令直接推送测试,获取更详细的日志信息:
    expo push:send --token <你的ExpoPushToken> --message "测试通知"
    
    若推送失败,命令行日志会返回具体错误原因(如令牌无效、证书不匹配等)。
  • 确认测试设备为物理iOS设备(模拟器无法接收APNs推送),且系统版本≥iOS 12(SDK46最低支持版本)。

5. 检查SDK与依赖版本兼容性

  • 确认package.json中expo-notifications版本为~0.16.1(SDK46对应的兼容版本),若版本不符,执行:
    expo install expo-notifications@~0.16.1
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:18:39