合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
为了更安全的网络访问,华为推送服务于2022年11月30日关闭Push相关域名的TLS1.0、TLS1.1协议及规定之外的加密套件,关闭后,应用使用TLS1.2以下协议或使用规定外的加密套件将无法正常推送消息。
若您的应用访问Push相关域名使用协议是TLS1.0或TLS1.1,后续可能无法正常发送消息,请您务必升级到TLS1.2及以上版本。
调整指导请查阅《Push Kit相关域名的TLS1.0和TLS1.1协议关闭通知》,如您有任何疑问,请联系技术支持,感谢您对华为推送的支持。
您调用发送Push消息API完成消息下发功能。
消息体最大不能超过4096Bytes(不包括Token)。按Token发送时,最大Token数不能超过1000(系统当前配置值)。
| 承载协议 | HTTPS POST |
|---|---|
| 接口方向 | 开发者服务器 -> 华为Push服务器 |
| 接口URL | https://push-api.cloud.huawei.com/v1/[clientid]/messages:send 说明 [clientid]:OAuth2.0客户端ID(凭据),登录AppGallery Connect网站,选择“开发与服务”,在项目列表中选择对应的项目,左侧导航栏选择“项目设置”,在该页面获取。 |
| 接口URL | https://push-api.cloud.huawei.com/v2/[projectid]/messages:send 说明
|
| 数据格式 | 请求消息:Content-Type: application/json;charset=UTF-8 响应消息:Content-Type: application/json |
调用API推送消息时,接口URL版本为V1(https://push-api.cloud.huawei.com/v1/[clientid]/messages:send)和V2(https://push-api.cloud.huawei.com/v2/[projectid]/messages:send)时,仅支持给HarmonyOS 3.x/4.x的系统版本推送通知。如果您想给HarmonyOS Next/5.x及之后的系统版本推送通知,请使用V3 版本URL(https://push-api.cloud.huawei.com/v3/[projectId]/messages:send)。
Request Header
| 参数 | 取值描述 | 样例 |
|---|---|---|
| Authorization | 通过OAuth 2.0开放鉴权(客户端模式)获取的 Access Token 或者基于服务账号生成的鉴权令牌(JSON Web Token)。 说明 Bearer后面拼接空格,再拼接获取的 Access Token 或 JSON Web Token。 | Bearer CF3Xl2XV6jMK*******ccUIaDg== 或 Bearer eyJr*****OiIx****.eyJh*****iJodHR**.QRod*****4Gp**** |
Message
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| 否 | String | 自定义消息负载,通知栏消息支持JSON格式字符串,透传消息支持普通字符串或者JSON格式字符串。样例:"your data","{'param1':'value1','param2':'value2'}"。
| |
| notification | 否 | Notification Object | 通知栏消息内容,具体字段请参见Notification的定义。 |
| android | 否 | AndroidConfig Object | Android消息推送控制参数,具体字段请参见AndroidConfig的定义。 如果是Android通知栏消息,本字段必填。 |
| apns | 否 | ApnsConfig Object | iOS消息推送控制参数,具体字段请参见ApnsConfig的定义。 如果是iOS消息,本字段必填。 |
| webpush | 否 | WebPushConfig Object | 网页应用推送消息控制参数,具体字段请参见WebPushConfig结构体的定义。 如果是网页应用通知栏消息,本字段必填。 |
| 否 | Array [String] | 按照Token向目标用户推消息,token/topic/condition三者只能且必须设置一个。样例:"token":["token1","token2"] 说明 在数组中加入了相同的Token会导致用户收到相同的消息,请您不要输入重复的Token。 | |
| topic | 否 | String | 按照Topic向订阅了本topic的用户推消息(目前只支持Android应用),token/topic/condition三者只能且必须设置一个。 |
| condition | 否 | String |
|
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| reviewer | 是 | String | 第三方审核机构名称,当前必须设置为tuibian。 |
| type | 是 | Integer | 消息体内容经审核后的类型标识,当前必须设置为0。 |
| result | 是 | Object | 第三方审核机构对消息体内容的审核结果,具体结构请参见推必安公有云接口文档。 |
Notification
AndroidConfig
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| 否 | String | 批量任务消息标识,消息回执时会返回给应用服务器,应用服务器可以识别bi_tag对消息的下发情况进行统计分析。 | |
| 否 | String | 作用一:完成自分类权益申请后,用于标识消息类型,确定消息提醒方式,对特定类型消息加快发送,取值如下:
作用二:申请特殊权限后,用于标识高优先级透传场景,取值如下:
| |
| 否 | Integer | 用户设备离线时,Push服务器对离线消息缓存机制的控制方式,用户设备上线后缓存消息会再次下发,取值如下: | |
| 否 | String | 自定义消息负载,此处如果设置了data,则会覆盖message.data字段。 | |
| fast_app_target | 否 | Integer | 快应用发送透传消息时,指定小程序的模式类型,小程序有两种模式开发态和生产态,取值如下:
|
| notification | 是 | AndroidNotification Object | Android通知栏消息结构体,具体字段请参见AndroidNotification结构体的定义。 |
| receipt_id | 否 | String | 输入一个唯一的回执ID指定本次下行消息的回执地址及配置,该回执ID可以在回执参数配置中查看。 |
| 否 | Integer |
| |
| 否 | String | 消息缓存时间,单位是秒。在用户设备没有网络时,消息在Push服务器进行缓存,在消息缓存时间内用户设备重新连接网络,消息会下发,超过缓存时间后消息会丢弃,默认值为“86400s”(1天),最大值为“1296000s”(15天)。 | |
| urgency | 否 | String | 透传消息投递优先级,取值如下:
设置为HIGH时需要申请权限,请参见申请特殊权限。 HIGH级别消息到达用户手机时可强制拉起应用进程。 |
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| 是 | String | Android通知栏消息标题,如果此处设置了title则会覆盖message.notification.title字段,且发送通知栏消息时,此处title和message.notification.title两者最少需要设置一个。 | |
| 是 | String | Android通知栏消息内容,如果此处设置了body则会覆盖message.notification.body字段,且发送通知栏消息时,此处body和message.notification.body两者最少需要设置一个。 | |
| icon | 否 | String | 自定义通知栏消息左侧小图标,此处设置的图标文件必须存放在应用的/res/raw路径下,例如“/raw/ic_launcher”,对应应用本地的“/res/raw/ic_launcher.xxx”文件。支持的文件格式目前包括PNG、JPG。自定义小图标规格规范请参见通知图标规范。 |
| color | 否 | String | 自定义通知栏按钮颜色,以#RRGGBB格式,其中RR代表红色的16进制色素,GG代表绿色的16进制色素,BB代表蓝色的16进制色素,样例:#FFEEFF。 |
| sound | 否 | String | 自定义消息通知铃声。在新创建渠道时有效,此处设置的铃声文件必须存放在应用的/res/raw路径下,例如设置为“/raw/shake”,对应应用本地的“/res/raw/shake.xxx”文件。支持的文件格式包括MP3、WAV、MPEG等,如果不设置,则用默认系统铃声。 说明 由于铃声是通知渠道的属性,因此铃声仅在渠道创建时有效,渠道创建后,即使设置自定义铃声也不会播放,而使用创建渠道时设置的铃声。 |
| 否 | Boolean | 默认铃声控制开关,取值如下:
| |
| tag | 否 | String | 消息标签,同一应用下使用同一个消息标签的消息会相互覆盖,只展示最新的一条。 |
| 是 | ClickAction Object | 消息点击行为,具体字段请参见ClickAction结构体的定义。 如果是Android通知栏消息时,则该参数必选。 | |
| 否 | String | 显示本地化body的StringId,具体使用请参见通知栏消息语言本地化。 | |
| 否 | Array [String] | 本地化body的可变参数,具体使用请参见通知栏消息语言本地化。样例:"body_loc_args":["1","2","3"] | |
| 否 | String | 显示本地化title的StringId,具体使用请参见通知栏消息语言本地化。 | |
| 否 | Array [String] | 本地化title的可变参数,具体使用请参见通知栏消息语言本地化。样例: "title_loc_args":["1","2","3"] | |
| 否 | Object | 消息国际化多语言参数,body_loc_key,title_loc_key优先从multi_lang_key读取内容,如果key不存在,则从APK本地字符串资源读,具体使用请参见通知栏消息语言本地化。 最多设置3种语言。 | |
| 否 | String | 自Android O版本后可以支持通知栏自定义渠道,指定消息要展示在哪个通知渠道上,详情请参见自定义通知渠道。 | |
| notify_summary | 否 | String | Android通知栏消息简要描述。 |
| 否 | String | 自定义通知栏消息右侧小图片URL,功能和message.notification.image字段一样,如果此处设置,则覆盖message.notification.image中的值。URL使用的协议必须是HTTPS协议,取值样例:https://example.com/image.png。 说明 图片文件须小于512KB,规格建议为40dp x 40dp,弧角大小为8dp。超出建议规格的图片会存在图片压缩或图片显示不全的情况。图片格式建议使用JPG/JPEG/PNG。 | |
| style | 否 | Integer | 通知栏样式,取值如下:
|
| big_title | 否 | String | Android通知栏消息大文本标题,当style为1时必选,设置big_title后通知栏展示时,使用big_title而不用title。 |
| big_body | 否 | String | Android通知栏消息大文本内容,当style为1时必选,设置big_body后通知栏展示时,使用big_body而不用body。 |
| notify_id | 否 | Integer | 每条消息在通知显示时的唯一标识。不携带或者设置-1时,推送服务自动为每条消息生成一个唯一标识;不同的通知栏消息可以拥有相同的notifyId,实现新消息覆盖旧消息功能。 |
| group | 否 | String | 消息分组,例如发送10条带有同样group字段的消息,手机上只会展示该组消息中最新的一条和当前该组接收到的消息总数目,不会展示10条消息。 |
| badge | 否 | BadgeNotification Object | Android通知消息角标控制,具体字段请参见BadgeNotification结构体的定义。 |
| ticker | 否 | String | 设备收到通知消息后状态栏上显示的内容提示。受Android系统原生机制的限制,在Android 5.0版本(API Level 21)之后的设备上,设置了该字段也不会显示。 |
| when | 否 | String | 设置通知栏消息的到达时间,如果您同时发送多条消息,Android通知栏中的消息根据这个值进行排序,同时将排序后的消息在通知栏上显示。该时间戳为UTC时间戳,样例:2014-10-02T15:01:23.045123456Z。 |
| 否 | String | 消息的提醒级别,取值如下: | |
| use_default_vibrate | 否 | Boolean | 是否使用系统默认振动模式控制开关,默认值为true。 |
| 否 | Boolean | 是否使用默认呼吸灯模式控制开关,默认值为true。 | |
| 否 | Array [String] | Android自定义通知消息振动模式,每个数组元素按照“[0-9]+|[0-9]+[sS]|[0-9]+[.][0-9]{1,9}|[0-9]+[.][0-9]{1,9}[sS]”格式,取值样例["3.5S","2S","1S","1.5S"],数组元素最多支持10个,每个元素数值整数大于0小于等于60。暂不支持EMUI 11。样例:"vibrate_config":["1","3"]。 | |
| 否 | String | Android通知栏消息可见性,取值如下:
| |
| light_settings | 否 | LightSettings Object | 自定义呼吸灯颜色,具体字段请参见LightSettings结构体的定义。 |
| 否 | Boolean | 应用在前台时,通知栏消息是否展示开关(默认值为前台展示true)。具体使用请参见前台应用的通知处理。 | |
| profile_id | 否 | String | 关联终端设备登录用户标识,最大长度为64。 |
| 否 | Array [String] | 当style为3时,Inbox样式的内容(必选),支持最大5条内容,每条最大长度1024。展示效果请参见通知栏消息Inbox样式。样例:"inbox_content":["content1","content2","content3"]。 | |
| buttons | 否 | Array [Button Object] | 通知栏消息动作按钮,最多设置3个。具体字段请参见Button结构体的定义。样例:"buttons":[{"name":"打开应用","action_type":"1"}]。 |
Button
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| name | 是 | String | 按钮名称,最大长度40。 |
| action_type | 是 | Integer | 按钮动作类型:
|
| intent_type | 否 | Integer | 打开自定义页面的方式:
当action_type为1时,该字段必填。 |
| 否 | String |
| |
| data | 否 | String |
|
ClickAction
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| type | 是 | Integer | 消息点击行为类型,取值如下:
|
| intent | 否 | String | 自定义页面中intent的实现,请参见指定intent参数。当type为1时,字段intent和action至少二选一。 |
| url | 否 | String |
|
| 否 | String | 设置通过action打开应用自定义页面时,本字段填写要打开的页面activity对应的action。 当type为1(打开自定义页面)时,字段intent和action至少二选一。 |
BadgeNotification
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| add_num | 否 | Integer | 应用角标累加数字非应用角标实际显示数字,为大于0小于100的整数。 例如,某应用当前有N条未读消息,若add_num设置为3,则每发一次消息,应用角标显示的数字累加3,为N+3。 |
| class | 否 | String | 应用入口Activity类全路径。 若需要使用角标功能,本字段必填,“add_num”和“set_num”参数选填。 样例:com.example.hmstest.MainActivity |
| set_num | 否 | Integer | 角标设置数字,大于等于0小于100的整数。 例如,set_num设置为10,则不论发了多少次消息,应用角标显示的数字都是10。 |
LightSettings
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| color | 是 | Color Object | 呼吸灯颜色,当设置light_settings时,该字段必选。具体字段请参见Color结构体的定义。 |
| light_on_duration | 是 | String | 呼吸灯点亮时间间隔,当设置light_settings时,该字段必选,格式按照“\d+|\d+[sS]|\d+.\d{1,9}|\d+.\d{1,9}[sS]”。 |
| light_off_duration | 是 | String | 呼吸灯熄灭时间间隔,当设置light_settings时,该字段必选,格式按照“\d+|\d+[sS]|\d+.\d{1,9}|\d+.\d{1,9}[sS]”。 |
Color
ApnsConfig
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| headers | 否 | Object | APNs消息头。具体字段请参见iOS开发者网站。 |
| payload | 是 | Object | APNs消息负载。如果消息负载中设置了title、body则会覆盖message.notification.title、body字段,且发送消息时,此处title、body和message.notification.title、body两者最少需要设置一个。 具体字段请参见iOS开发者网站。 |
| hms_options | 是 | ApnsConfig.HmsOptions Object | APNs的hms参数,具体字段请参见ApnsConfig.HmsOptions结构体的定义。 |
ApnsConfig.HmsOptions
WebPushConfig
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| headers | 否 | Headers Object | Web推送消息头,具体字段请参见Headers结构体的定义。 |
| notification | 否 | WebNotification Object | Web推送通知栏消息结构体,具体字段请参见WebNotification结构体的定义。 |
| hms_options | 否 | WebPushConfig.HmsOptions Object | Web推送的参数,具体字段请参见WebPushConfig.HmsOptions结构体的定义。 |
Headers
WebNotification
| 是否必选 | 参数类型 | 描述 | |
|---|---|---|---|
| title | 否 | String | 网页应用通知消息标题,如果此处设置了title则会覆盖message.notification.title字段,且发送消息时,此处title和message.notification.title两者最少需要设置一个。 |
| body | 否 | String | 网页应用通知消息文本,如果此处设置了body则会覆盖message.notification.body字段,且发送消息时,此处body和message.notification.body两者最少需要设置一个。 |
| icon | 否 | String | 小图标URL。 |
| image | 否 | String | 大图URL。 |
| lang | 否 | String | 语言。 |
| tag | 否 | String | 通知消息分组覆盖标签,多条相同tag折叠显示,显示最新一条,仅仅用于手机端浏览器。 |
| badge | 否 | String | 浏览器图标URL,仅用于手机端浏览器,用于替换默认情况下显示的浏览器图标。 |
| dir | 否 | String | 文字方向,取值如下:
|
| vibrate | 否 | Array [Integer] | 振动间隔时间,单位毫秒。样例:[100,200,300] |
| renotify | 否 | Boolean | 消息重新提醒标识。 |
| require_interaction | 否 | Boolean | 通知应保持活动状态,直到用户点击或将其关闭为止,而不是自动关闭。 |
| silent | 否 | Boolean | 消息免声音、振动提醒标识。 |
| timestamp | 否 | Long | 标准的unix时间戳。 |
| actions | 否 | Array [WebActions Object] | 消息动作定义,具体字段请参见WebActions结构体的定义。 |
WebActions
WebPushConfig.HmsOptions
请参见HTTPS下行消息示例报文。
Response Body
| 参数 | 参数类型 | 描述 |
|---|---|---|
| code | String | 错误码。 |
| msg | String | 错误码描述。 |
| requestId | String | 请求标识。 |
- {
- "code": "80000000",
- "msg": "Success",
- "requestId": "157*******006"
- }
| HTTP错误码 | 描述 | 解决方法 |
|---|---|---|
| 200 | 成功。 | - |
| 400 | 参数错误。 | 请检查响应内容错误码并根据错误码进一步排查问题。 |
| 401 | 鉴权失败。 | 请检查HTTP头中Authorization是否正确,参考OAuth 2.0开放鉴权(客户端模式)或者基于服务账号生成鉴权令牌(JSON Web Token)。 |
| 404 | 找不到服务。 | 请检查请求URI是否正确。 |
| 500 | 服务内部错误。 | 请联系技术支持解决。 |
| 502 | 请求连接异常,常见于网络状况不稳定。 | 建议稍后重试,或联系技术支持解决。 |
| 503 | 流量控制。 |
|
| 业务错误码 | 描述 | 解决方法 |
|---|---|---|
| 80000000 | 成功。 | 不涉及。 |
| 80100000 | 部分Token发送成功,返回的illegal_tokens为不合法而发送失败的Token。响应示例: | 请检查返回值中发送失败的Token。 |
| 80100001 | 请求参数部分检查错误。响应示例: | 按照响应消息中的提示,请检查请求参数。 |
| 80100003 | 消息结构体错误。 | 按照响应消息中的提示,请检查消息结构体的参数。 |
| 80100004 | 消息设置的过期时间小于当前时间导致。 | 请检查消息字段ttl。 |
| 80100013 | 消息字段collapse_key不合法。 | 请检查消息字段collapse_key。 |
| 80100016 | 消息里面含有敏感信息。 | 请检查发送消息内容,可参见基于第三方审核结果的消息推送。 |
| 80100017 | 同时发送的Topic任务超过100个。 | 请稍后再发送主题消息,增加主题消息发送间隔。 |
| 80100018 | 消息体内容验签不通过。 | 请检查发给三方机构审核的消息体与发给Push服务器的消息体内容是否一致。 |
| 80200001 | 认证错误。 | 请求HTTP头中Authorization参数鉴权令牌错误。
|
| 80200003 | Access Token 过期。 | 请求HTTP头中Authorization参数中通过OAuth 2.0开放鉴权(客户端模式)获取的 Access Token 已过期,请重新申请后重试。 |
| 80200005 | JSON Web Token 过期 | 请求HTTP头中Authorization参数中基于服务账号生成的鉴权令牌(JSON Web Token)过期,请重新生成。 |
| 80300002 | 当前应用无权限下发推送消息。 |
|
| 80300007 | 所有Token都是无效的。 |
|
| 80300008 | 消息体大小(不含Token)超过系统设置的默认值(4096Bytes)。 | 请求消息体大小超过默认值,请减小消息体后重新发送消息。 |
| 80300010 | 消息体中的Token数量超过系统设置的默认值。 | 请减少Token数量后分批发送消息。 |
| 80300011 | 无权限发送高级别通知消息。 | 请申请特殊权限后再发送高级别通知消息。 |
| 80300013 | 回执地址错误。 | 请检查您的回执地址是否正确,回执证书是否过期。 |
| 80600003 | 请求OAuth服务失败。 | 请检查OAuth 2.0客户端ID和客户端密钥。 |
| 81000001 | 系统内部错误。 | 请联系技术支持解决。 |