Flutter iOS应用App Store版本无法接收Firebase通知求助
Flutter App Store版本无法接收Firebase通知的解决方案
核对APNs证书与Firebase配置
- 确认Apple开发者后台的生产环境APNs证书有效,且已上传到Firebase控制台的Cloud Messaging设置中——TestFlight用的是开发/AdHoc证书,和正式版生产证书不通用,别搞混。
- 检查Firebase里iOS应用的.p8密钥、Team ID、Bundle ID,必须和App Store发布的应用信息完全匹配,一个字符都不能错。
检查Flutter端Firebase Messaging配置
- 先把
firebase_messaging依赖更到稳定版,跑flutter pub upgrade firebase_messaging就行,旧版本可能有适配问题。 - 打开
Info.plist,确认FirebaseAppDelegateProxyEnabled设置正确:如果手动处理过APNs代理就设为NO,没动过就保持默认,但要确保AppDelegate的消息接收逻辑没写错。 - 正式版里,用
FirebaseMessaging.instance.getAPNSToken()拿到的token才是生产环境的,别拿TestFlight的token去测App Store版本,肯定收不到。
- 先把
确认App Store发布的权限配置
- Xcode里的Signing & Capabilities必须加了Push Notifications,而且提交到App Store的包要包含这个配置——别本地配置了,打包时又漏了。
Info.plist里必须有NSUserNotificationUsageDescription和NSRemoteNotificationUsageDescription的权限说明,不然用户授权弹窗都弹不出来,自然收不到通知。
注意通知发送的环境选择
- Firebase控制台发测试通知时,一定要选Production(生产环境),TestFlight属于预发布环境,和正式版推送通道不一样,选错环境等于白发。
- 自己服务器发通知的话,请求FCM API时,
apns字段里要加apns-push-type: alert,apns-environment设为production,不然会推到开发环境通道。
排查设备端问题
- 让用户检查设备设置:进入「设置-通知-你的应用」,确认允许通知,声音、横幅这些选项都开着,别不小心关了。
- 确保设备能正常连苹果的生产推送服务器,有些网络环境会屏蔽APNs,换个网络试试。
通过日志定位问题
- 用Xcode连装了App Store版本的设备,看控制台日志,搜
FirebaseMessaging或APNs,找token获取失败、通知被拦截的错误信息。 - 去Firebase控制台看Cloud Messaging的报告,看消息发送状态,有没有“未送达”的记录,里面会写错误原因,照着改就行。
- 用Xcode连装了App Store版本的设备,看控制台日志,搜
内容的提问来源于stack exchange,提问作者user19690778
相关产品推荐
相关产品推荐

