iOS通知Xcode Release测试正常,上架App Store后失效排查
iOS & Flutter FCM上架后推送失效的排查方向
1. APNs环境配置错配
- Xcode本地Release测试用的是开发环境APNs证书/密钥,但上架App Store必须用生产环境APNs配置。如果Firebase控制台里上传的还是开发环境的密钥,生产环境下推送会直接失败。
- 直接去Firebase控制台的iOS应用配置页,确认上传的是苹果开发者后台生成的生产环境
.p8密钥,且该密钥已开启生产推送权限。
2. 通知授权环节漏处理
- 本地测试时你可能已经给过App通知权限,但上架后新用户(或重装App的老用户)首次打开时,App如果没弹出授权请求,用户拒绝或未授权的话,根本收不到推送。
- 检查Flutter代码:确保App启动时调用了
FirebaseMessaging.instance.requestPermission(),并且处理了授权结果,比如用户拒绝时给出提示引导开启权限。
3. FCM令牌的环境差异没处理
- 本地Release测试生成的是开发环境FCM令牌,上架后App生成的是生产环境令牌。如果你的后端还在用测试阶段存的开发令牌发通知,管理员的生产设备肯定收不到。
- 验证后端逻辑:管理员登录或App启动时,要把新生成的生产令牌上传到服务器,发通知时必须用对应的生产环境令牌,不能混用。
4. 推送内容违反苹果审核规则
- 苹果对上架App的推送行为有严格限制,如果你的预订通知属于营销类(而非纯功能性),或者内容和App功能无关,可能会被苹果静默拦截。
- 自查推送内容:确保是和用户预订操作直接相关的功能性通知,同时App的隐私政策里要明确说明通知的用途,避免被判定为违规推送。
5. FCM插件版本或配置有坑
- 本地测试用的FCM插件版本,和上架打包时的版本如果不一致,或者用了有bug的旧版本,可能导致生产环境推送失效。
- 检查
pubspec.yaml里的firebase_messaging版本,换成最新稳定版,然后重新执行flutter pub get,iOS端还要重新跑pod install。
6. 后端推送逻辑没切换到生产环境
- 后端发FCM通知时,要是没区分开发和生产环境,比如用了开发环境的推送参数,可能导致生产环境无法正常投递。
- 确认后端请求FCM接口时,正确设置
apns-push-type为alert,apns-environment设为production,确保请求适配生产环境的APNs规则。
内容的提问来源于stack exchange,提问作者Milan Labus
相关产品推荐
相关产品推荐

