iOS发布版无法接收推送通知,开发版正常:phonegap-plugin-push集成求助
iOS发布模式下PhoneGap推送插件无法接收通知的排查方案
我之前也踩过这个坑,开发模式正常但发布到TestFlight或App Store就收不到推送,大概率是证书、配置或者环境参数的问题,你可以按下面的步骤逐一排查:
1. 确认推送证书的环境匹配
- 开发模式用的是开发推送证书,发布模式必须对应生产环境推送证书,这俩完全不能混用。你得去苹果开发者后台确认生成的是针对App Store/TestFlight的生产推送证书,并且已经正确同步到你的推送服务平台。
- 顺便检查证书有效期,过期的证书会直接导致推送失败。
2. 检查Xcode归档配置
- 归档打包时,在Xcode的
Build Settings里,确保Code Signing Identity选的是发布证书,不是开发证书。 - 对应的
Provisioning Profile必须是包含生产推送权限的配置文件,要确认profile里已经启用了Push Notifications功能。
3. 插件初始化的环境参数要正确
- 初始化推送插件时,iOS平台的
production参数必须区分环境:开发模式设为false,发布模式一定要设为true。如果发布时还留着false,插件会去连苹果的开发推送服务器,自然收不到通知。
举个正确的初始化代码示例:const push = PushNotification.init({ ios: { alert: "true", badge: "true", sound: "true", production: true // 发布模式必须设为true } });
4. 验证APNs推送权限
- 发布到TestFlight后,打开App时会请求通知权限,要确保用户已经允许。可以去iOS的
设置-通知里查看你的App是否开启了所有通知权限。 - 如果权限没问题,还可以用苹果的APNs Provider API手动发测试推送,排查是不是推送服务平台的问题。
5. 检查Cordova项目配置
- 确认
config.xml里已经正确配置了推送权限描述,比如:<platform name="ios"> <config-file parent="NSUserNotificationUsageDescription" platform="ios" target="*-Info.plist"> <string>需要推送通知提醒您最新消息</string> </config-file> <config-file parent="NSRemoteNotificationUsageDescription" platform="ios" target="*-Info.plist"> <string>需要推送通知提醒您最新消息</string> </config-file> </platform> - 建议把Cordova iOS平台更新到对应版本的稳定版,旧版本可能和iOS 11存在兼容性问题。
6. 查看日志定位问题
- 如果上面的步骤都排查完还是不行,可以用Xcode连接设备,查看发布模式下的日志,过滤
APNs或Push相关内容,看看有没有证书验证失败、服务器连接错误这类提示。
内容的提问来源于stack exchange,提问作者ankitjain11
相关产品推荐
相关产品推荐

