发送下行消息
荣耀推送服务支持您使用HTTPS协议接入Push服务端,HTTPS协议通道提供下行消息能力。
获取Access Token
您的服务端获取Access Token,详情请参考获取鉴权接口。
请求示例:
POST /auth/realms/developer/protocol/openid-connect/token HTTP/1.1
Host: iam.developer.honor.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=<客户端ID>&client_secret=<客户端密钥>
发送消息
您的服务端调用API发送Push消息,更多消息体内容请参见下行消息接口,相关错误码请参见下行消息响应码。
HTTPS POST URL:
https://push-api.cloud.honor.com/api/v1/{APPID}/sendMessage
注意:
{APPID}
请替换为您的应用ID, 开发者平台开通该应用PUSH服务后应用的APP ID。
请求消息头示例:
Content-Type: application/json; charset=UTF-8
Authorization: Bearer CF3Xl2XV6****************************************Nm3WccUIaDg==
timestamp: 1563105451261
注意:请求消息头中的Authorization参数为 Bearer后面拼接空格再拼接获取鉴权接口返回的Access Token。
通知栏消息体示例:
{
"android": {
"notification": {
"title": "test title",
"body": "test body",
"clickAction": {
"type": 3
}
}
},
"token": ["pushtoken1"]
}
透传消息体示例:
{
"data": "{'param1':'value1','param2':'value2'}",
"token": ["pushtoken1"]
}
注意:由于每个设备上的每个应用的
token
都是唯一存在的,您可以通过传入不同token
向特定用户推送消息
查看消息回执
您的应用服务器接收Push消息回执,以便查看消息状态,详细请参见消息回执。
通知栏样式
荣耀推送服务支持多种通知栏样式,您可以自定义个性化的通知栏消息来吸引用户。荣耀推送服务支持设置下表所示的字段来自定义您的通知栏消息。
样例:
字段值:
- 标题:title
- 内容:body
- 通知小图:image
桌面角标
荣耀推送服务提供了设置桌面角标的API接口,您可以在消息中封装角标参数。
消息体示例:
{
"notification": {
"title": "message title ",
"body": "message body"
},
"android": {
"notification": {
"clickAction": {
"type": 3
},
"badge": {
"addNum": 1,
"badgeClass": "com.honor.push.MainActivity",
"setNum": 10
}
}
},
"token": ["pushtoken1"]
}
注意:
- 设置应用角标数字,"badgeClass"必填,"addNum"和"setNum"选填,若"addNum"和"setNum"都设置为空,则应用角标数字默认加1。
- 如果同时设置“addNum”与“setNum”,以setNum为准。
- 打开应用或者点击、清理通知栏消息并不会清理角标数,需开发者自行设置清理角标。
通知小图
荣耀推送服务提供了设置通知右侧小图的API接口,您可以在消息中携带image参数并设置。image参数需要传入使用HTTPS协议的URL。
消息体示例:
{
"android": {
"notification": {
"title":"消息标题",
"body":"消息内容",
"image":"your image url",
"clickAction": {
"type": 3
}
}
},
"token": ["token1"]
}
注意:图标文件大小须小于100KB,图标建议规格大小:160px x 160px,弧角大小为32px,超出规格大小的图标会存在图片压缩或显示不全的情况。
大文本样式
默认样式下仅支持单行文本,单行文本支持的字数太少,会有表达不全的缺陷。大文本样式支持标题单行,内容文字多行。
消息体示例:
{
"android": {
"notification": {
"title": "荣耀推送服务",
"body": "荣耀推送服务是荣耀提供的消息推送平台,建立了从云端到终端的消息推送通道。您通过集成荣耀推送SDK,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活跃度。",
"clickAction": {
"type": 3
},
"style": 1,
"bigTitle": "荣耀推送服务",
"bigBody": "荣耀推送服务是荣耀提供的消息推送平台,建立了从云端到终端的消息推送通道。您通过集成荣耀推送SDK,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活跃度。"
}
},
"token": ["pushtoken1"]
}
注意:大文本样式展开之前显示的标题与内容取自title与body字段,非bigTitle与bigBody字段的内容。并且title与body内容需和bigTitle与bigBody保持一致。
按钮样式
消息体示例:
{
"android": {
"notification": {
"title":"消息标题",
"body":"消息内容",
"image":"your image url",
"clickAction": {
"type": 3
},
"buttons":[{
"name":"打开应用",
"actionType":"2",
"intent":"https://example.com/image.png"
}]
}
},
"token": ["token1"]
}
注意:通知栏消息动作按钮,最多设置3个
其它能力
通知栏消息覆盖展示
通知栏消息到达终端设备展示后,如果用户没有点击或者清理,您可以通过推送服务端REST API设置新推送的消息覆盖之前展示的消息。
-
使用 "group" 字段。相同group的多条消息,只展示最新的一条消息。
{ "android": { "notification": { "title":"消息标题", "body":"消息内容", "group": "groupTest", "clickAction": { "type": 3 } } }, "token": ["token1"] }
-
使用 "tag" 字段。具有相同tag标签值的新消息覆盖老的消息。
{ "android": { "notification": { "title":"消息标题", "body":"消息内容", "tag": "tagTest", "clickAction": { "type": 3 } } }, "token": ["token1"] }
-
使用 "notifyId" 字段。不同的通知栏消息可以有相同的notifyId,实现新的通知栏消息覆盖老的。
{ "android": { "notification": { "title":"消息标题", "body":"消息内容", "notifyId": 123, "clickAction": { "type": 3 } } }, "token": ["token1"] }
注意:您可以指定tag、notifyId、group三个字段来实现消息覆盖功能。三个字段是互斥的,只能使用一个。如果三个字段都设置了,字段优先级为:group > tag > notifyId。