You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中使用AWS Amplify实现Android推送通知报错

解决AWS Pinpoint发送推送消息时的PERMANENT_FAILURE(InvalidRegistration)错误

这个问题我之前帮好几个开发者排查过,核心原因就是你的推送令牌(token)不被FCM(错误里标注的GCM)认可——要么是令牌过期/失效了,要么是配置环节出了疏漏。咱们一步步来解决:

先拆解错误里的关键信息

从你给出的错误响应里,这几个字段直接点明了问题:

  • DeliveryStatus": "PERMANENT_FAILURE":说明这是不可逆的配置/令牌问题,不是临时网络波动
  • InvalidRegistration:FCM明确表示这个令牌无效
  • Unregistered or expired token:直接指出令牌要么过期,要么设备已经注销了该令牌

具体解决步骤

1. 重新获取有效的设备推送令牌

旧令牌失效的场景非常多:应用卸载重装、设备系统重置、FCM主动刷新令牌等等。你需要:

  • 在你的移动应用中重新获取最新的FCM(Android)或APNs(iOS)令牌
  • 拿着新令牌,更新AWS Pinpoint对应Endpoint的Address字段(也就是存储令牌的位置)

2. 验证Pinpoint项目的推送配置是否正确

FCM不认令牌也可能是Pinpoint的配置出错:

  • 打开Pinpoint控制台,找到你的项目,进入Settings > Push notifications
  • 检查GCM/FCM的Server key是否正确,有没有过期或者和FCM控制台的密钥不一致
  • 确认填写的应用包名和你的移动应用包名完全一致,大小写、特殊字符都不能错

3. 检查Endpoint的配置细节

Pinpoint的Endpoint配置错误也会导致推送失败:

  • 确保Endpoint的ChannelType设置正确:Android用GCM,iOS开发环境用APNS_SANDBOX,生产环境用APNS
  • 检查Endpoint状态是否为ACTIVE,如果是INACTIVE,Pinpoint会直接跳过该Endpoint的消息发送

4. 用新令牌做小范围测试

更新完令牌和配置后,先别急着用命令行批量测试:

  • 在Pinpoint控制台手动创建一个测试Endpoint,填入新获取的令牌,设置正确的ChannelType
  • 直接在控制台给这个测试Endpoint发送一条推送消息,确认能成功送达
  • 如果控制台测试成功,再把新令牌替换到你的pinpoint-send-messages.json里,重新执行命令

额外注意事项(针对iOS)

如果是iOS设备,还要注意:

  • 严格区分开发环境和生产环境,对应的APNs证书要匹配,不能用开发证书给生产环境设备发消息,反之亦然
  • 确保你的设备已经信任了对应的APNs证书,没有被系统拦截

内容的提问来源于stack exchange,提问作者Sahej Maharjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:42:57