FCM iOS项目无法接收通知:控制台显示发送成功但设备未收到
解决FCM iOS推送显示成功但设备未接收的问题
我来帮你一步步排查这个头疼的问题——既然Android端推送正常,FCM控制台也显示发送成功,但iOS真机就是收不到,大概率是环境匹配或配置细节没做对,结合你已经开启推送权限、重新生成证书的操作,咱们从这些方向入手:
1. 确认证书和发送环境完全匹配
- 你上传到FCM的p12证书是开发环境(Development)还是生产环境(Production)?FCM发送通知时必须选对应环境:用开发证书的话,发送时要选「开发」模式;用生产证书就选「生产」模式,环境不匹配是最常见的原因。
- 再核对证书的Bundle ID:必须和你iOS应用的Bundle ID完全一致,哪怕多一个空格或者大小写错了都不行。导出证书时也要确保勾选了「推送通知」权限,不然证书根本没用。
2. 验证设备FCM Token的环境对应性
- 你当前测试的iOS应用是Debug模式还是Release模式?Debug模式下获取的Token是开发环境的,只能接收FCM开发模式的推送;Release模式对应的是生产Token,要对应生产推送。可以在应用里加个日志打印Token,然后用这个Token在FCM控制台单独发测试通知,排除批量推送的问题。
- 如果Token是旧的或者无效的,FCM也会显示发送成功,但设备收不到,所以先确认Token是最新的、有效的。
3. 检查应用的推送相关配置
- 除了Capabilities里开Push Notifications,别忘了开启Background Modes里的「Remote notifications」,这个选项能保证应用在后台甚至锁屏时也能收到推送。
- 手动检查设备的通知权限:进入设置→找到你的应用→通知,确认「允许通知」是开着的,并且横幅、声音这些选项也没被关掉——有时候用户不小心关了权限自己都没注意。
4. 细查FCM控制台的发送设置
- 发送通知时,确认「目标」选的是你的iOS应用,别不小心选成Android应用了。
- 去看FCM的消息报告:发送完通知后,点进消息详情页,看看有没有送达失败的提示,比如设备注册失效、证书验证失败这些细节,能直接帮你定位问题。
5. 证书导出和上传的细节要拉满
- 导出p12证书时,一定要选「包含私钥」,并且设置的密码要和上传到FCM时输入的完全一致——密码错了的话,FCM根本没法用这个证书发推送,却会显示发送成功。
- 你重新生成开发证书后,是不是重新导出了p12并替换了FCM控制台里的旧证书?一定要确保控制台里的证书是最新的那个,旧证书过期或者无效都会导致推送失败。
如果以上都排查完还是不行,建议直接用APNs发送测试通知(绕开FCM),如果APNs能收到,那就是FCM的配置问题;如果APNs也收不到,那就是iOS端证书或权限的问题,这样能快速缩小范围。
内容的提问来源于stack exchange,提问作者Rajendran
相关产品推荐
相关产品推荐

