iOS使用Firebase HTTP v1推送消息报403错误,Android正常
排查iOS Firebase HTTP v1推送403错误的核心要点
匹配APNs推送类型与应用权限
如果你用"apns-push-type": "background"发静默通知,必须满足两个硬要求:- iOS应用已开启「Remote notifications」后台模式(Xcode的Signing & Capabilities里,Background Modes下勾选对应选项)
- 推送payload里不能包含
notification字段,只能保留data字段——Firebase v1 API里,要是把notification和background推送类型混用,APNs直接会返回403拒绝请求
核对Firebase项目的APNs配置
别以为之前正常就没问题,重新检查这两项:- Firebase控制台中,对应iOS应用的「Cloud Messaging」标签下,APNs认证密钥是否有效(有没有过期、是否和当前App ID完全匹配)
- 推送请求的
apns-topic字段必须是正确的App ID(比如com.yourcompany.yourapp),这个字段要和APNs密钥的Team ID、App ID完全对应
验证请求凭证的权限
虽然Android推送正常,但iOS对凭证校验更严格:- 确认你的OAuth 2.0令牌拥有
https://www.googleapis.com/auth/firebase.messaging权限 - 检查令牌是否过期——Firebase v1 API的令牌有效期是1小时,需要定时刷新
- 确认你的OAuth 2.0令牌拥有
修正静默通知的payload格式
静默通知必须严格符合APNs规范,参考正确格式:{ "message": { "token": "你的设备令牌", "data": { "自定义键1": "自定义值1", "自定义键2": "自定义值2" }, "apns": { "headers": { "apns-push-type": "background", "apns-priority": "5" }, "payload": { "aps": { "content-available": 1 } } } } }重点:
apns-priority必须设为5,设为10会被APNs判定为不符合静默通知要求,直接返回403
内容的提问来源于stack exchange,提问作者fbs419
相关产品推荐
相关产品推荐

