HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端,可以从服务器发送下行消息给终端设备。这篇文章汇总了服务端下发消息最常见的6个错误码,并提供了原因分析和解决方法,有遇到类似问题的开发者们快了解一下吧。

错误码一:80200001," Oauth认证错误"

原因分析:

  1. 下发消息未添加Authorization请求参数或值为空。

  1. 应用A的APPID申请的Access Token,却用于给应用B推送消息,也会出现此错误码。

申请Access Token

下发消息

解决方法:

  1. 排查请求HTTP头中是否有入参Authorization请求参数。Authorization获取方式可参考文档、下行消息API可参考文档

  2. 获取Access Token使用的APPID和下发消息使用的APPID需要保持一致。

错误码二:80300007,"Token无效错误"

原因分析:

  1. token不合法,token中多或少了字符,例如下图中多了个空格。

  1. 给应用A下发消息,token却是应用B的,这种情况也是原因之一。

解决方法:

  1. 检查token参数是否正确;

  2. 确保下发消息使用的token,是获取于目标应用的

错误码三:80300010,"消息体中的Token数量不符合默认值"

原因分析:

  1. 开发者将“message”字段拼写错误,示例图中message字段结尾多了 'r';

  2. token位置不正确,字段结构问题;

  3. 下发的token数量超过了限制,或token为空。

解决方法:

  1. 确保message、token字段写入正确;

  2. message字段包含token,与 "android"同级;

  1. token的数量应在1-1000个,确认token参数的数量,参考字段结构及说明请参考文档

错误码四:80200003,"Oauth Token过期"

原因分析:

  1. Authorization请求参数值中的Access Token已过期

  2. 请求参数值不正确,多或少了其他字符。

解决方法:

  1. Access Token有效期为一个小时,若超过限定时间,则需要重新获取并使用最新Access Token下发消息。重新获取Access Token方法可参考文

  2. 确保使用的Access Token与获取的一致,复制Access Token时出现转义字符,需要将“/”还原为“/”。

错误码五:80100016,"消息里面含有敏感信息"

原因分析:

出现这种报错说明推送消息内容中含有敏感信息

解决方法:

  1. 由于不提供敏感词库,需要开发者自行检测内容;

  2. 开发者可以接入推必安,下发消息通过推必安审核后,华为不会二次审核。接入推必安的流程可参考文档

注意事项:

  1. 推必安审核通过后,需要将推必安返回通过的结果添加到华为Review字段的result对象中,这样下发消息时华为才能知道消息审核已通过,华为也不会进行二次审核。
"review": [
{
"reviewer": "tuibian",[]()
"type": 0,
"result": { //以下为推必安返回结果
"code": 200,
"data": {
"auditEngine": "t****ine",
"auditId": "0f74b*******0b3f490d",
"labels": []
},
"msg": "Pass",
"sign": "MEQCIBHc********IqLjw==" }
}
]
}
  1. 并不是将整个消息体都放到推必安“content”字段中,需要审核的是“message”里面的内容,同时会对消息体内容按ASCII码升序排序后转为字符串格式进行审核。
{
"validate_only":false,
"message":{ //以下部分需要审核
"notification":{
"title":"message title",
"body":"message body"
},
"android":{
"collapse_key":0,
"notification":{
"click_action":{
"type":2,
"url":"https://example.com"
}
}
}, "token":[
"pushtoken1"
]
}
}
  1. 由于审核过程繁琐,建议减少下发字段的使用,这样操作更简单也会避免下发消息时出现80100018错误码,该错误码指发给三方机构审核的消息体与下发时的消息体不一致。

错误码六:sub_error":57303,"error_description":"appid is overload blocked","error":1302

原因分析:

过多请求access_token被流控,流控阈值为1000个/5分钟。

解决方法:

调整请求逻辑,access_token有效期为一个小时,无需频繁申请。流控5分钟后重置,可以再次申请。更多access_token相关限制可参考文档

了解更多详情>>

访问华为开发者联盟官网

获取开发指导文档

华为移动服务开源仓库地址:GitHubGitee

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

【FAQ】接入HMS Core推送服务,服务端下发消息常见错误码原因分析及解决方法的更多相关文章

  1. 【FAQ】接入HMS Core推送服务过程中一些常见问题总结

    HMS Core 推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道.开发者通过集成推送服务,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活 ...

  2. 【FAQ】HMS Core推送服务与本地创建通知消息如何相互覆盖?

    我们知道,单独使用HMS Core推送服务或本地创建通知消息,都可以实现通知消息的覆盖,方式分别为: 1.本地创建通知消息(简称本地通知消息) 通过notificationManager.notify ...

  3. 如何使用Postman调试HMS Core推送接口?

    HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端.Postman是一款接口测试工具,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果.Postma ...

  4. 【FAQ】接入HMS Core应用内支付服务过程中一些常见问题总结

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...

  5. 【FAQ】干货满满,接入HMS Core应用内支付服务过程中一些常见问题总结(2)来啦

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.该服务支持客户端和服务端两种开发形式,具体可以参考官方文档 上次,我们分享和总 ...

  6. 【FAQ】应用内支付服务无法拉起支付页面常见原因分析和解决方法

    华为应用内支付服务(In-App Purchases)通过简便的接入流程为用户提供良好的应用内支付体验,然而在实际接入过程中,有一些开发者反馈测试时会无法正常拉起支付页面,下文将详细分析问题出现的5种 ...

  7. 接入WxPusher微信推送服务出现错误:Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

    背景 使用WxPusher微信推送服务 ,可以及时的将服务的一些运行异常信息,发送到自己的微信上,方便了解服务的运行状态(PS:这个服务是免费的). 你可以在这里看到WxPusher微信推送服务的接入 ...

  8. 别再问WiFi密码了,HMS Core统一扫码服务让手机一键联网

    现代生活离不开网络.在餐厅.商场等公共场所,手机连接WiFi一直是高频使用场景.虽然公共场所的免费WiFi越来越多,但网络连接过程却很麻烦.有的需要打开网页注册或点击广告链接才能上网,还有的要求下载特 ...

  9. WP7推送通知服务

    原文地址http://www.cnblogs.com/Joetao/articles/2214482.html (一)为什么使用推送通知服务(1)Windows Phone执行模型决定只有一个第三方的 ...

随机推荐

  1. Win10系统链接蓝牙设备

    1. 进入控制面板,选择 设备 2. 进入设备界面,删除已有蓝牙,如果蓝牙耳机已经链接其他设备,先断开链接 3. 点击添加蓝牙或其他设备 4. 选择蓝牙,选择你的蓝牙耳机名称

  2. ONNXRuntime学习笔记(四)

    接上一篇在Python端的onnx模型验证结果,上一篇在Pytorch和onnxruntime-gpu推理库上分别进行效果效率统计分析,结论要比最初设置的50ms高很多,这一篇我将在C++端写个测试代 ...

  3. 791. Custom Sort String - LeetCode

    Question 791. Custom Sort String Solution 题目大意:给你字符的顺序,让你排序另一个字符串. 思路: 输入参数如下: S = "cba" T ...

  4. HBase数据库基础操作

    实验要求: 根据上面给出的学生表Student的信息,执行如下操作: 用Hbase Shell命令创建学生表Student: create 'student','name', 'score' put ...

  5. 单例模式与pickle模块

    目录 设计模式之单例模式 pickle模块 设计模式之单例模式 设计模式是前辈们发明的经过反复验证用于解决固定问题的固定套路,在IT行业中设计模式总共有23种,可以分为三大类:创建型.结构型.行为型. ...

  6. Redis - 持久化 AOF 和 RDB

    Redis - 持久化 AOF 和 RDB AOF AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集. AOF 文件中的命令全部以 Redis 协议的格 ...

  7. CF908D New Year and Arbitrary Arrangement 题解

    \(0.\) 前言 有一天 \(Au\) 爷讲期望都见到了此题,通过写题解来加深理解. \(1.\) 题意 将初始为空的序列的末尾给定概率添加 \(a\) 或 \(b\),当至少有 \(k\) 对 \ ...

  8. vue组件data函数

    vue组件data通常定义为一个函数并return一个对象,对象中定义的就是组件数据,当然定义数据还有props.computed等方式. data如果直接定义为对象data: {message: ' ...

  9. LoRa和NB-IoT会长期共存吗?

    物联网有很多无线通信技术,主要是Zigbee,WiFi,蓝牙和Z-wave等短距离通信技术,另一种是LPWAN.LPWAN的两种类型之一在未授权的频谱上工作.另一种是2G/3G/4G蜂窝通信技术,该技 ...

  10. 【Redis】事件驱动框架源码分析(多线程)

    IO线程初始化 Redis在6.0版本中引入了多线程,提高IO请求处理效率. 在Redis Server启动函数main(server.c文件)中初始化服务之后,又调用了InitServerLast函 ...