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

企业账号开发应用:生产环境(sandbox=0)无法接收推送通知求助

排查企业应用生产环境无法接收APNs推送的常见原因

嘿,这个问题我之前帮团队排查过好几次,给你列几个最核心的排查方向,按优先级来:

  • 生产环境APNs证书未正确配置
    企业账号的开发和生产推送证书是完全独立的,哪怕你开发环境的证书没问题,生产环境的可能没生成、过期,或者没部署到推送服务器上。去Apple Developer后台的「Certificates, Identifiers & Profiles」里,找到对应App ID的「Push Notifications」选项,确认Production标签下的证书是有效的(没过期、状态是Active),并且推送服务器上安装的是这个生产证书,不是开发环境的。

  • Provisioning Profile环境不匹配
    上线打包用的Provisioning Profile必须是Production类型的,不能是Development版。你可以验证一下:右键IPA包→显示包内容→找到embedded.mobileprovision,用文本编辑器打开后,搜索aps-environment字段,如果值是development,那就是用错了Profile,导致App还是连接到沙箱APNs服务器,自然收不到生产推送。

  • APNs服务器地址配置错误
    生产和沙箱环境的APNs服务器地址完全不同,sandbox=0时必须指向生产服务器:

    • 传统TCP接口:gateway.push.apple.com:2195(推送)、feedback.push.apple.com:2196(设备反馈)
    • HTTP/2接口:https://api.push.apple.com:443
      别把生产推送请求发到沙箱服务器(api.sandbox.push.apple.com:443),这是非常容易犯的低级错误。
  • 设备Token环境不兼容
    开发环境和生产环境的设备Token是不一样的!你在沙箱模式下获取的Token,放到生产环境的推送请求里是无效的。上线后必须让用户重新打开App,获取生产环境的Token,再用这个Token发起推送请求。

  • 推送权限未正确获取
    哪怕是企业内部应用,iOS系统的推送权限逻辑和普通App一致:

    1. 检查用户是否在首次打开App时允许了推送权限;
    2. 确认App代码里正确实现了UNUserNotificationCenter的授权流程(iOS 10+),并且在上线包中没有遗漏这部分逻辑;
    3. 让用户去「设置→你的App→通知」里确认推送权限已开启。
  • 网络/防火墙限制
    有些企业内部的防火墙可能屏蔽了生产APNs服务器的端口(比如443、2195),但允许沙箱服务器的访问。可以在推送服务器上用以下命令测试连通性:

    telnet api.push.apple.com 443
    

    如果连接失败,就得找运维团队开放对应端口。

  • Payload格式问题
    虽然生产和沙箱环境的Payload格式基本一致,但有时候开发时的测试字段可能导致生产推送失败。确保aps字段格式正确:

    • alert可以是字符串或包含title/body的字典;
    • badge必须是整数;
    • sound是有效音频文件名或default;
      避免在aps里加入无效字段,自定义字段要放在aps之外。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:11:49