iOS应用首次前台接收FCM通知时出现InvalidRegistration→NotRegistered异常
iOS前台状态下FCM推送报InvalidRegistration/NotRegistered问题排查方案
确认设备令牌有效性
检查Postman中使用的FCM令牌是否为应用当前获取的最新值。可在iOS应用前台主动打印通过FirebaseMessaging.instance.getToken()(Flutter环境)获取的令牌,与请求中的令牌逐一比对,旧令牌或错误令牌会直接触发NotRegistered错误。验证APNs基础配置
FCM在iOS平台依赖APNs服务,需确认:- 开发者账号的APNs证书(开发/生产环境)已正确上传至Firebase控制台,且证书状态正常
- 应用
Info.plist中已添加FirebaseAppDelegateProxyEnabled并设置为YES,同时保证APNs环境(开发/生产)与Firebase项目配置完全匹配 - 设备已授予应用通知权限,iOS前台状态下默认不会自动弹出通知,需在客户端代码中实现前台通知的展示逻辑
规范FCM推送请求格式
Postman的请求需严格遵循FCM接口规范:- 请求头必须包含
Authorization: key=<你的FCM服务器密钥> - 区分
notification和data字段:仅发送notification字段时,iOS前台不会自动展示通知,若令牌无效则直接返回错误;结合data字段可在客户端回调中自定义处理逻辑 - 确保
to字段填入的令牌无多余空格、换行或特殊字符
- 请求头必须包含
优化令牌刷新与失效处理
- iOS应用卸载重装后,旧令牌会立即失效,需保证应用启动时重新获取令牌并同步到服务器
- 当FCM返回NotRegistered错误时,服务器端应标记对应令牌失效,停止向其推送,避免重复触发错误
内容的提问来源于stack exchange,提问作者Akshay Gupta
相关产品推荐
相关产品推荐

