Amazon Pinpoint生产环境Campaign推送未送达,测试消息正常求助
排查Amazon Pinpoint生产环境Campaign推送失败的问题
我之前碰到过几乎一模一样的生产环境Campaign推送问题,结合你的情况,给你几个针对性的排查方向,应该能帮你定位到问题:
仔细核对细分规则与端点属性的匹配度
虽然控制台显示有1个符合条件的端点,但建议直接去Pinpoint的端点管理模块找到你的设备对应的Endpoint ID,逐条核对细分的规则:- 确认端点的
ChannelType为APNS,APNSEnvironment是PRODUCTION——这两个字段不匹配的话,Campaign会直接跳过该端点; - 如果细分是基于应用版本、设备系统版本这类属性,检查端点的对应字段和你设置的细分条件是否完全一致(比如你设置的是
AppVersion = 2.1.0,但端点里的实际值可能是2.1或者带了测试后缀); - 有些时候细分会默认排除“已停用”的端点,确认你的端点状态是
ACTIVE。
- 确认端点的
检查Campaign的发送配置细节
- 如果是定时Campaign,一定要确认时区设置是否正确——我之前就踩过时区的坑,以为是立即发送,结果因为时区差晚了十几个小时才推送;
- 如果是事件触发型Campaign,确认你在TestFlight设备上真正触发了对应的事件(比如设置的是“应用启动”触发,但安装后你有没有完全打开过应用?后台挂着不算触发启动事件);
- 查看Campaign的高级设置,有没有开启“静默推送”或者其他特殊配置,导致推送没有显示在设备通知栏。
查看Pinpoint推送日志和APNs反馈
- 先确认你的Pinpoint项目已经配置了CloudWatch日志(在项目设置 > 事件流里开启),然后去CloudWatch的
Pinpoint/AppMessaging日志组,搜索你的Endpoint ID或者设备Token:- 看看有没有推送失败的错误信息,比如APNs返回的
BadDeviceToken(Token无效)、Unregistered(设备已注销Token)这类错误; - 检查日志里的
DeliveryStatus字段,如果显示SUCCESS但你没收到,可能是设备端的通知设置问题;如果是FAILURE,直接根据错误码去排查。
- 看看有没有推送失败的错误信息,比如APNs返回的
- 另外,Campaign的报告页面会显示已发送、已送达的数量,如果已发送数为0,说明细分确实没命中;如果已发送但未送达,就是APNs端的问题。
- 先确认你的Pinpoint项目已经配置了CloudWatch日志(在项目设置 > 事件流里开启),然后去CloudWatch的
再次确认Xcode的生产环境配置
- 虽然你设置了APS环境为
production,但还是要核对:- Xcode的Signing & Capabilities > Push Notifications里,生产证书是否有效,有没有不小心用了开发证书;
Info.plist里的APSEnvironment字段是否明确设置为production——自动签名有时候会覆盖这个值,建议手动添加这个字段锁定配置;- TestFlight应用的Bundle ID必须和生产证书的Bundle ID完全一致,不能有任何差异。
- 虽然你设置了APS环境为
验证端点的用户属性关联
如果你的细分是基于用户ID或者自定义用户属性,确认应用在启动时正确调用了Pinpoint的updateEndpoint或registerUser方法,把用户属性同步到了端点上。有时候应用初始化时没有完成这一步,导致端点的用户属性为空,细分条件无法匹配。
内容的提问来源于stack exchange,提问作者Carlos Minero
相关产品推荐
相关产品推荐

