FCM推送返回成功但iPhone未收到推送通知问题求助
iOS FCM推送返回成功但设备收不到通知的排查方案
我之前调试FCM推送时也遇到过完全一样的情况——后台返回{ "success": 2, "failure": 0 },控制台显示已送达,但iPhone就是没弹出通知。结合踩过的坑,给你整理几个核心排查点:
核对APNs证书与运行环境的匹配性
FCM是通过APNs给iOS设备推通知的,证书配置错了直接会导致“假成功”。要确认:- Firebase后台上传的APNs证书是有效未过期的;
- 证书对应的环境(开发/生产)和你当前APP的运行环境一致:比如用Xcode直接真机调试是开发环境,要是Firebase里只上传了生产证书,肯定收不到。
检查推送Payload的格式合规性
iOS对FCM推送的Payload有硬性要求:- 如果要触发系统通知弹窗,必须包含
aps字典,且里面至少要有alert(可以是字符串或字典)、badge、sound中的一项; - 别只传
data字段——APP在后台时,纯data类型的推送不会自动弹出通知,必须搭配notification字段或者aps结构。
- 如果要触发系统通知弹窗,必须包含
确认APP的后台模式已开启
打开Xcode的项目配置 →Signing & Capabilities,确保Background Modes中的Remote notifications选项是勾选状态。没开这个的话,APP在后台/锁屏状态下无法接收并展示推送。验证Device Token的有效性与环境匹配
在APP中打印获取到的device token,然后用这个token在Firebase控制台单独推送测试:- 如果还是收不到,大概率是token对应的环境和推送环境不匹配(比如开发token用生产配置推送);
- 另外要确认token没有过期,卸载重装APP后token会变化,记得更新到服务器。
排查iOS系统的通知拦截设置
除了APP自身的权限,还要检查手机端:- 「设置→通知→你的APP」中,「允许通知」是否开启,通知样式有没有设为「无」;
- 有没有开启「专注模式」或者静音模式,导致通知被屏蔽;
- 部分iOS版本中,「低电量模式」可能会限制后台推送,可以暂时关闭试试。
查看Xcode控制台的实时日志
把真机连接到Xcode,运行APP后发送推送,观察控制台输出:- 有没有出现
didReceiveRemoteNotification的回调? - 有没有类似
Failed to register for remote notifications的错误提示? - 这些日志能直接帮你定位是证书问题、token问题还是APP处理逻辑的问题。
- 有没有出现
内容的提问来源于stack exchange,提问作者Aria
相关产品推荐
相关产品推荐

