一、问题场景

某位开发者调用API接口推送消息,请求返回:{"code": "80000000","msg": "Success","requestId": "16233092****287602020201"}。返回"code": "80000000"表示该请求是成功的,但是手机端未收到通知栏消息。

二、原因分析排查

首先可以排查消息体中是否存在以下几种字段使用不当的情况:

情况1: validate_only的值是true

validate_only字段控制当前是否为测试消息,测试消息只做格式合法性校验,不会推送至用户设备。也就是说validate_only值为true时,即使请求返回"code": "80000000",服务器也不会给端侧推送消息。

情况2:没有使用notification字段

消息体中有message.data,没有message.notification和message.android.notification,消息类型为透传消息。透传消息透传给应用,不会在通知栏展示。

情况3:foreground_show的值是false

foreground_show控制前台应用的通知处理,当该值被设置为“false”且应用在前台时,通知消息的全部内容将会通过onMessageReceived(RemoteMessage message)方法传递给应用,不展示通知栏消息。

前台应用的通知处理参考文档

如以上3种情况都不符合,可使用Push自助分析功能查询消息发送情况:

登录AppGallery Connect网站,点击“我的项目”,在项目列表中找到自己的项目,通过“增长 > 推送服务 > 自助分析(Beta)”页签进入。

输入发送消息时的“token”和推送服务返回的“requestId”后,点击查询按钮即可查看消息发送情况。

这上面的消息记录更新的比较慢,如果未查询到消息处理,请在推送请求半小时后再查询。Push自助分析参考文档

如果按以上排查步骤仍未能找到原因,请查看技术支持文档。

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐