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

Expo推送通知本地正常,TestFlight及安卓APK生产环境失效求助

Expo推送通知生产环境失效排查方案

核心排查方向

  • 确认推送Token的环境匹配:本地开发、EAS开发版、TestFlight对应不同的环境,Token是绑定环境的。你需要确保发送通知时使用的是对应生产/TestFlight环境生成的Token,而非本地开发环境的Token。
  • 检查EAS构建的配置参数:
    • 安卓开发版构建时,需确认eas.json中是否正确配置了developmentClient: true,同时Firebase的配置是否对应开发环境的参数;
    • iOS的TestFlight构建属于生产环境,需确认Expo凭据中是否上传了正确的APNs密钥,且构建时指定了生产环境配置。
  • 验证推送请求的返回结果:你的sendPushNotification函数没有处理接口返回的错误信息,建议添加日志捕获返回内容,比如:
export async function sendPushNotification(expoPushToken) {
  const message = {
    to: expoPushToken,
    sound: "default",
    title: "Welcome",
    body: "Body text",
    data: { someData: "goes here" },
  };

  const response = await fetch("https://exp.host/--/api/v2/push/send", {
    method: "POST",
    headers: {
      Accept: "application/json",
      "Accept-encoding": "gzip, deflate",
      "Content-Type": "application/json",
    },
    body: JSON.stringify(message),
  });
  
  // 新增日志查看返回结果
  const responseData = await response.json();
  console.log('推送接口返回:', responseData);
}

通过返回的错误码可以定位具体问题,比如Token无效、权限不足等。

  • 检查设备通知权限:生产环境下,用户首次打开App时是否授予了通知权限?可以在App启动时主动检查权限状态,若未授权引导用户开启。
  • Expo SDK版本兼容性:你使用的SDK 47.0.0相对老旧,部分推送服务的适配可能存在问题,建议尝试升级到较新的稳定版本,同时同步更新相关依赖。

额外注意点

  • 安卓开发版APK需要使用Expo Go以外的客户端打开,确保构建包包含了完整的推送配置;
  • TestFlight环境下,推送通知可能存在延迟,需等待几分钟再确认是否送达;
  • 确认Firebase控制台中对应的安卓应用包名、iOS应用的Bundle ID与EAS构建配置完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:35:14