AWS Pinpoint推送通知显示发送成功但设备未接收问题求助
问题背景
使用AWS Pinpoint推送FCM通知时,系统返回发送成功,但目标设备未收到通知,且Firebase控制台无该通知的发送记录。相关操作与配置如下:
- 已将Firebase服务账户JSON文件上传至Pinpoint的FCM控制台
- 通过Pinpoint「Test Messaging」向有效设备令牌发送测试通知,状态显示成功
- React Native应用的AWS Amplify配置:
{ "PushNotification": { "Pinpoint": { "appId": "be923ab029724fdf9af91a869282db7c", "region": "us-east-1" } } }
排查步骤
验证Firebase服务账户凭证
确认上传的JSON文件是Firebase项目的所有者级服务账户,检查文件内的client_email是否对应项目的服务账户,且该账户已分配Cloud Messaging Admin权限。若权限不足或文件过期,重新下载最新的服务账户JSON并替换Pinpoint中的凭证。核对设备令牌的有效性与环境匹配
确认测试令牌是当前Firebase项目对应环境(开发/生产)生成的,开发环境令牌无法接收生产环境推送,反之亦然。直接通过Firebase控制台向该令牌发送测试通知,验证令牌本身是否有效。检查Pinpoint的FCM配置细节
确认Pinpoint项目的FCM配置中,Android包名/iOS Bundle ID与React Native应用的包名完全一致(大小写敏感),同时确认FCM通道在Settings > Mobile push > Firebase Cloud Messaging中处于启用状态。排查应用端的Amplify与FCM配置
确保React Native应用中Amplify PushNotification模块已完成初始化:调用requestPermissions获取推送权限,调用registerDevice完成设备令牌注册;检查应用是否正确实现FCM消息回调(如onNotificationReceivedInForeground、onNotificationOpened),避免通知被拦截;验证应用的google-services.json(Android)或GoogleService-Info.plist(iOS)与Firebase项目配置完全匹配。查看详细日志定位问题
进入Pinpoint项目的Analytics > Events,筛选_campaign.send事件,查看是否存在DeliveryFailure子事件及具体失败原因;在AWS CloudWatch中搜索Pinpoint对应的日志组(如/aws/pinpoint/[你的AppId]),查看FCM请求的响应详情,获取Firebase返回的错误码。
常见解决方案
- 若为凭证权限问题:重新生成并上传拥有
Cloud Messaging Admin权限的Firebase服务账户JSON。 - 若为令牌环境不匹配:切换Pinpoint的推送环境(开发/生产),或重新获取对应环境的设备令牌。
- 若为配置不匹配:修正Pinpoint中的包名/Bundle ID,确保与应用一致;重新导入正确的Firebase配置文件到应用项目中。
- 若为应用端处理问题:检查Amplify初始化流程,确保推送权限已授予,消息回调函数正常执行。
内容的提问来源于stack exchange,提问作者Amir Ayat

