Flutter应用使用Amplify Pinpoint创建活动时Opted-in endpoints为0问题
Pinpoint集成FCM推送活动Opted-in endpoints为0问题排查方案
问题原因
- 端点订阅状态未显式配置:Pinpoint端点默认
OptOut属性为ALL(即全部退订),若集成时仅上传FCM令牌未主动修改该属性,端点会被标记为未订阅,不计入Opted-in统计。 - 通道类型或令牌配置错误:端点的
ChannelType未设置为FCM对应的GCM枚举值,或Address字段填入的FCM注册令牌无效、过期、与当前项目不匹配,Pinpoint识别不到可用的推送通道,不会将其判定为有效订阅端点。 - Pinpoint FCM通道配置异常:Pinpoint项目后台的FCM推送通道配置的服务器密钥与Firebase控制台的密钥不一致,导致Pinpoint无法验证推送通道可用性,所有关联端点都不会被计入Opted-in数量。
解决方案
- 主动更新端点订阅状态:在Flutter端完成FCM令牌获取后,调用Pinpoint端点更新接口时显式指定订阅状态,参考代码如下(以Amplify Flutter集成为例):
await Amplify.Notifications.Push.updateEndpoint( optOut: OptOut.none, // 显式设置为未退订 address: fcmToken, // 填入真实的FCM注册令牌 channelType: ChannelType.gcm, // FCM对应通道类型为GCM );
若直接调用AWS Pinpoint HTTP API,对应请求参数设置OptOut: 'NONE'、ChannelType: 'GCM'即可。
- 校验端点属性:登录AWS Pinpoint控制台,进入「用户和细分」-「端点」页面,查询对应2个端点的属性:确认
Opt out字段值为无,Channel为GCM,地址字段为有效FCM令牌。 - 验证FCM通道配置:进入Pinpoint项目「设置」-「推送通知」页面,检查FCM(GCM)通道的服务器密钥,与Firebase控制台「项目设置」-「云消息传递」下的服务器密钥完全一致。
- 测试推送有效性:先使用Pinpoint控制台的「测试消息」功能,直接填入测试设备的FCM令牌发送单播推送,确认能正常收到后,再重新创建推送活动,此时Opted-in端点数量会正常显示。
问题参考截图

内容的提问来源于stack exchange,提问作者pencil
相关产品推荐
相关产品推荐

