实况窗是一种帮助用户聚焦正在进行的任务,方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明,请参见Live View Kit简介。
通过Push Kit发送的实况窗消息支持三种操作类型,分别是:
| 实况窗消息操作类型 | 支持操作的场景类型 | 说明 |
|---|---|---|
| 创建实况窗 | FLIGHT、TAXI、TRAIN | 仅航班、出行打车、高铁/火车场景支持通过Push Kit创建实况窗,其他场景请通过Live View Kit本地创建。 |
| 更新实况窗 | 所有场景 | 所有场景皆支持通过Push Kit更新实况窗。 |
| 结束实况窗 | 所有场景 | 所有场景皆支持通过Push Kit结束实况窗。 |
说明:
推送实况窗消息仅支持Phone设备。
有关场景类型的详细说明请参见支持的范围与场景。
根据创建实况窗的方式不同,通过Push Kit发送实况窗消息的流程有所区别。
通过Live View Kit创建实况窗,Push Kit更新与结束实况窗

使用Push Kit,获取Push Token。
使用Live View Kit创建实况窗成功后,开发者需要将实况窗id、pushToken、实况窗场景event以及业务服务的相关的状态属性保存到业务服务端。
当业务服务的用户订单状态发生变化时,通过Push Kit通道推送更新消息,更新/结束实况窗。
通过Push Kit创建、更新、结束实况窗

使用Push Kit,获取Push Token。
将Push Token保存到业务的服务端。
通过Push Kit推送创建/更新/结束实况窗消息。
实况窗更新效果示例图:

说明:
单个实况窗的生命周期最长不超过8小时,超过8小时后,系统会认为通知结束。
为了确保用户看到内容的时效性,请您确保对实况窗内容进行及时更新。系统将在实况窗超过2小时未更新时,隐藏实况窗在状态栏胶囊和锁屏的展示,保留通知中心展示;超过4小时未更新,系统会认为实况窗结束,并从各个展示入口清除该实况窗。
参见指导获取Push Token。
根据应用情况选择创建实况窗的方式:
通过Push Kit远程创建实况窗,需满足创建实况窗约束。以出行打车场景为例,消息示例如下:
// Request URL
POST "https://oh-push-api.getui.com/v3/[appId]/messages:send"
// Request Header
Content-Type: application/json
Authorization: Bearer eyJ0eX******IUzI1NiJ9.eyJpc******YzNTZ9.j6y1NGM******NncAeLE
push-type: 7
// Request Body
{
"payload": {
"activityId": 1,
"operation": 0,
"event": "TAXI",
"status": "DRIVER_ON_THE_WAY", // 司机正在赶来
"activityData": {
"notificationData": {
"type": 3,
"contentTitle": "{{status}}", // 司机正在赶来
"contentText": [
{
"text": "距您"
},
{
"text": "1.2公里",
"foregroundColor": "#FF317AF7"
},
{
"text": " | "
},
{
"text": "5分钟",
"foregroundColor": "#FF317AF7"
}
],
"clickAction": {
"actionType": 1, // 打开应用自定义页面
"action": "xxxxxx" // 应用内置页面ability对应的action
},
"richProgress": {
"type": 0,
"nodeIcons": ["icon1.png", "icon2.png", "icon3.png"], // 取值为“/resources/rawfile”路径下的文件名
"indicatorIcon": "taxi.png", // 取值为“/resources/rawfile”路径下的文件名
"progress": 40,
"indicatorType": 1,
"color": "#FF317AF7",
"bgColor": "#19000000"
},
"extend": {
"type": 3,
"pic": "phone.png", // 取值为“/resources/rawfile”路径下的文件名
"clickAction": {
"actionType": 0 // 点击辅助区打开应用首页
}
}
},
"capsuleData": {
"type": 1,
"status": 1,
"icon": "icon.svg", // 取值为“/resources/rawfile”路径下的文件名
"bgColor": "#FF317AF7",
"remind": "EXPAND",
"title": "接驾中",
"content": "预计5分钟"
}
}
},
"pushOptions": {
"ttl": 1000,
"biTag": "biTag"
},
"target": {
"token": [
"o39qtoP7Nd6s*******2d4d5636"
]
}
}
当用户的服务订单状态发生变化时,开发者可以调用Push Kit服务端开放的REST API服务接口,更新或者结束实况窗。
消息详情可参见场景化消息API接口功能介绍。(若开发者更新的实况窗为通过Push Kit远程创建的实况窗,更新时请遵守创建实况窗约束)
// Request URL
POST "https://oh-push-api.getui.com/v3/[appId]/messages:send"
// Request Header
Content-Type: application/json
Authorization: Bearer eyJ0eX******IUzI1NiJ9.eyJpc******YzNTZ9.j6y1NGM******NncAeLE
push-type: 7
// Request Body
{
"payload": {
"activityId": 1,
"operation": 1,
"event": "TAXI",
"status": "HEADING_TO_DESTINATION", // 正在去往目的地
"version": 1,
"activityData": {
"notificationData": {
"type": 3,
"contentTitle": "{{status}}", // 正在去往目的地
"contentText": [
{
"text": "距目的地"
},
{
"text": "7.2公里",
"foregroundColor": "#FF317AF7"
},
{
"text": " | 预计"
},
{
"text": "27分钟",
"foregroundColor": "#FF317AF7"
}
],
"clickAction": {
"actionType": 1, // 打开应用自定义页面
"action": "xxxxxx" // 应用内置页面ability对应的action
},
"richProgress": {
"type": 0,
"nodeIcons": ["icon1.png", "icon2.png", "icon3.png"], // 取值为“/resources/rawfile”路径下的文件名
"indicatorIcon": "taxi.png", // 取值为“/resources/rawfile”路径下的文件名
"progress": 70,
"indicatorType": 1,
"color": "#FF317AF7",
"bgColor": "#19000000"
},
"extend": {
"type": 0
}
},
"capsuleData": {
"type": 1,
"status": 1,
"icon": "icon.svg", // 取值为“/resources/rawfile”路径下的文件名
"bgColor": "#FF317AF7",
"title": "27分钟",
"content": "距目的地7.2公里"
}
}
},
"pushOptions": {
"ttl": 1000,
"biTag": "biTag"
},
"target": {
"token": [
"o39qtoP7Nd6s*******2d4d5636"
]
}
}
说明:
若发送的activityId对应的实况窗不存在(更新或结束实况窗的场景中),将限制使用该activityId发送实况窗消息24小时。