Ionic Capacitor推送通知:SNS返回APNS平台令牌无效求助
排查SNS生产环境APNS令牌无效的关键配置遗漏
以下是你可能遗漏的配置项,按优先级排查:
APNS环境与SNS平台应用不匹配
用.p8密钥创建SNS平台应用时,必须选择对应环境:生产环境的SNS平台应用要设置为Production,而非Sandbox。Capacitor在生产打包(App Store/Ad Hoc分发)时获取的是APNS生产令牌,若SNS平台应用配置为Sandbox,会直接判定令牌无效。.p8密钥的权限与配置错误
- 确认Apple Developer后台的.p8密钥已启用
APNS服务权限,且未被撤销或过期。 - 在SNS创建平台应用时,需准确填写
Team ID(Apple开发者团队ID)、Key ID(.p8密钥的ID),并完整上传.p8密钥文件内容,不能有多余空格或换行。 - 确保SNS平台应用绑定的iOS Bundle ID与Apple Developer后台的App ID、Capacitor项目配置的
appId完全一致。
- 确认Apple Developer后台的.p8密钥已启用
Capacitor Push插件的生产环境配置
- 检查Capacitor项目的
capacitor.config.ts,确认Push插件未强制设置为开发环境:plugins: { Push: { presentationOptions: ["badge", "sound", "alert"], // 不要设置forceSandbox: true,生产环境需移除或设为false } } - 验证Xcode项目配置:确保
Signing & Capabilities中已启用Push Notifications,且使用的Provisioning Profile为生产环境(App Store/Ad Hoc类型),包含推送权限。
- 检查Capacitor项目的
终端创建时的参数错误
- 确认创建SNS终端时使用的是生产环境的平台应用ARN,而非开发环境的ARN。
- 检查Capacitor获取的设备令牌是否完整传递:避免令牌被截断、转义或添加多余字符,可在日志中打印令牌后直接对比APNS返回的有效令牌格式(无空格的十六进制字符串)。
Apple App ID与Provisioning Profile配置
- 在Apple Developer后台,确保目标App ID已开启
Push Notifications服务,且生产环境的推送配置状态为“Enabled”。 - 确认生产环境的Provisioning Profile已关联该App ID,且包含推送权限(可在Xcode中查看Provisioning Profile的详情)。
- 在Apple Developer后台,确保目标App ID已开启
内容的提问来源于stack exchange,提问作者Jordin Vell
相关产品推荐
相关产品推荐

