鸿蒙极客教大家如何开发鸿蒙APP-- 实况窗服务基础开发
实况窗是 HarmonyOS 5.0 及以上版本支持的通知形态,专注于展示持续进行、动态更新的服务状态,让用户无需打开应用即可快速获取关键信息。时段性:服务有明确起止时间(最长不超过 8 小时),如打车、外卖配送等;时效性:信息仅在特定时间段内有价值,如航班登机提醒、赛事比分;变化性:展示内容实时动态更新,确保用户获取最新状态。实况窗服务通过多触点、无打扰的实时信息展示,极大提升了用户对服务进度的
大家好,我是陈杨,8 年前端老兵转型鸿蒙开发,也是一名鸿蒙极客。
从前端到鸿蒙,我靠的是 “三天上手 ArkTS” 的技术嗅觉,以及 “居安思危” 的转型魄力。这三年,我不玩虚的,封装了开源组件库「莓创图表」,拿过创新赛大奖,更带着团队上架了 11 款自研 APP,涵盖工具、效率、创意等多个领域。
想体验我的作品?欢迎搜索体验:指令魔方、JLPT、REFLEX PRO、国潮纸刻、Wss 直连、ZenithDocs Pro、圣诞相册、CSS 特效。
今天,咱们继续聊点硬核的 ——[实况窗服务基础开发]。

一、实况窗服务核心认知
1. 什么是实况窗?
实况窗是 HarmonyOS 5.0 及以上版本支持的通知形态,专注于展示持续进行、动态更新的服务状态,让用户无需打开应用即可快速获取关键信息。其核心特点可概括为三点:
- 时段性:服务有明确起止时间(最长不超过 8 小时),如打车、外卖配送等;
- 时效性:信息仅在特定时间段内有价值,如航班登机提醒、赛事比分;
- 变化性:展示内容实时动态更新,确保用户获取最新状态。
2. 核心优势与适用场景
(1)产品优势
- 全设备覆盖:支持 HarmonyOS 5.0 + 的手机、平板设备,与硬件完全解耦;
- 多触点展示:一次接入即可在锁屏、通知中心、状态栏同步展示;
- 无打扰交互:状态栏胶囊支持点击展开,不打断用户当前操作;
- 高效闭环:服务全流程可视化,提升业务履约效率。
(2)典型适用场景
实况窗支持 12 类核心场景,覆盖出行、生活、娱乐等多个领域,以下是高频场景示例:
| 场景类型 | 核心功能 | 适用场景 |
|---|---|---|
| 出行打车(TAXI) | 展示司机接驾时间、剩余行程 | 网约车、出租车、顺风车 |
| 即时配送(DELIVERY) | 配送进度、预计送达时间 | 外卖、生鲜、同城配送 |
| 航班(FLIGHT) | 登机提醒、延误 / 取消通知 | 航班出行、航班关注 |
| 赛事比分(SCORE) | 实时比分更新 | 体育赛事、游戏赛事 |
| 导航(NAVIGATION) | 路线变化、行进状态 | 步行、骑行、车辆导航 |
注意:实况窗严禁用于营销广告,仅支持用户主动触发的服务场景。
二、接入前准备工作
在开始开发前,需完成权限申请、环境配置等基础操作,具体步骤如下:
1. 基础环境要求
- 操作系统:HarmonyOS 5.0 及以上;
- 设备类型:手机、平板(仅支持中国境内使用);
- 开发工具:DevEco Studio 4.0+。
2. 关键权限开通流程
(1)开通推送服务权益
实况窗的创建与更新依赖 Push Kit,需先开通推送服务:
- 登录AppGallery Connect;
- 进入项目列表,选择目标项目;
- 在 “开发与服务” 中找到 “推送服务”,点击 “申请开通”。
(2)设置数据处理位置
由于实况窗仅支持中国境内,需将数据处理位置设为中国:
- 进入项目设置 > 数据处理位置;
- 勾选 “中国” 并设为默认;
- 点击 “保存”(需确保与服务器及用户所在地一致,否则推送失败)。
(3)申请实况窗服务权益
- 在 AppGallery Connect 中进入 “项目设置> 开放能力管理”;
- 找到 “实况窗服务”,点击 “申请”;
- 填写申请信息(场景类型、场景描述、附件材料);
- 提交后 5 个工作日内查看审批结果(通过互动中心通知)。
(4)白名单联调测试
申请正式权限前,需通过白名单设备调试:
- 进入 “增长> 推送服务 > 配置”;
- 找到 “实况窗 - 白名单设备管理”,通过 Push Token 添加测试设备(上限 100 台);
- 24 小时内生效,可在设备上调试实况窗展示效果。
三、实战开发:实况窗核心功能实现
以下以 “外卖配送” 场景为例,展示实况窗的创建、更新与结束全流程实现。
1. 设计规范遵循
实况窗支持 “胶囊态” 和 “卡片态” 两种展示形式,需遵循以下设计要求:
- 胶囊态:状态栏展示,仅显示核心信息(如 “外卖配送中 2.5km”);
- 卡片态:锁屏 / 通知中心展示,包含进度条、时间、操作按钮(如 “联系骑手”);
- 颜色:主色调与应用品牌一致,避免使用刺眼颜色。
2. 代码实现(ArkTS)
(1)依赖配置
在build.gradle中添加 Push Kit 依赖:
dependencies {
implementation 'com.huawei.hms:push:6.11.0.300'
implementation 'com.huawei.harmonyos:liveviewkit:1.0.0.300'
}
(2)本地创建实况窗
通过端侧 API 创建外卖配送场景的实况窗,适用于应用进程存活时:
import { LiveViewManager, LiveViewInfo, SceneType } from '@ohos/liveviewkit';
// 1. 构建实况窗基础信息
const liveViewInfo: LiveViewInfo = {
sceneType: SceneType.DELIVERY, // 场景类型:即时配送
eventId: 'order_123456', // 唯一标识(如订单号)
title: '外卖配送中',
content: '预计25分钟后送达',
startTime: new Date().getTime(), // 开始时间
endTime: new Date().getTime() + 25 * 60 * 1000, // 结束时间(最长8小时)
progress: 30, // 进度(0-100)
// 胶囊态配置
capsuleConfig: {
text: '配送中 2.5km',
icon: $r('app.media.delivery_icon') // 应用图标
},
// 卡片态配置
cardConfig: {
layoutType: 1, // 系统预设布局1(配送场景专用)
extraInfo: [
{ key: '骑手', value: '王师傅' },
{ key: '电话', value: '138****1234' }
],
actionButtons: [
{ text: '联系骑手', action: 'contact_rider' },
{ text: '查看订单', action: 'open_order' }
]
}
};
// 2. 创建实况窗
try {
LiveViewManager.createLiveView(liveViewInfo, (err, data) => {
if (err) {
console.error(`创建实况窗失败:${err.message}`);
return;
}
console.log(`创建实况窗成功,liveViewId: ${data.liveViewId}`);
});
} catch (e) {
console.error(`创建实况窗异常:${JSON.stringify(e)}`);
}
(3)通过 Push Kit 更新实况窗
当应用进程未存活时,通过 Push Kit 推送更新消息(仅支持 FLIGHT、TAXI、TRAIN 场景):
// Java后端代码(Spring Boot示例)
import com.huawei.hms.push.HmsMessaging;
import com.huawei.hms.push.RemoteMessage;
@RestController
public class LiveViewPushController {
@PostMapping("/updateLiveView")
public String updateDeliveryStatus(@RequestParam String orderId, @RequestParam int progress) {
// 1. 构建实况窗更新消息
RemoteMessage remoteMessage = new RemoteMessage.Builder("YOUR_PUSH_TOKEN")
.setData("sceneType", "DELIVERY")
.setData("eventId", orderId)
.setData("progress", String.valueOf(progress))
.setData("content", "预计15分钟后送达")
.setData("capsuleText", "配送中 1.2km")
.build();
// 2. 发送推送(需配置华为推送SDK)
try {
HmsMessaging.getInstance().send(remoteMessage);
return "更新消息推送成功";
} catch (Exception e) {
e.printStackTrace();
return "更新消息推送失败:" + e.getMessage();
}
}
}
(4)结束实况窗
当服务完成(如外卖送达)或超时,需主动结束实况窗:
// 结束实况窗
LiveViewManager.finishLiveView('order_123456', (err) => {
if (err) {
console.error(`结束实况窗失败:${err.message}`);
} else {
console.log('结束实况窗成功');
}
});
3. 关键流控与生命周期说明
- 更新频次限制:外卖配送场景每 5 分钟最多更新 10 次,每小时 60 次(超频次将丢弃);
- 生命周期管理:超过 2 小时未更新,仅保留通知中心展示;超过 4 小时未更新,系统自动结束;
- 用户操作:用户删除实况窗后,不再接收该事件的更新。
四、测试与上线验证
1. 自验清单(申请正式权限前)
- 截图满足设计规范(胶囊态、卡片态、锁屏效果);
- 已添加实况窗结束事件;
- 实况窗信息与应用内任务进度一致;
- 同一任务无多个实况窗推送;
- 特殊场景(如配送取消)已处理;
- 白名单设备调试通过。
2. 正式权限申请
- 应用月活≥1000 且已上架,可申请正式权限(单次最多 3 个场景,最多 11 个);
- 提交场景描述、接入方案截图、自验结果;
- 7 个工作日内收到评审结果,整个流程约 15 个工作日。
五、避坑指南
- 数据处理位置错误:必须设为中国,否则推送失败;
- 场景准入违规:营销广告类场景会被驳回,需确保用户主动触发;
- 更新频次超限:避免高频无效更新,建议根据实际进度变化推送;
- Profile 文件配置:开通权限后需重新生成 Profile 文件并打包到应用;
- 多端推送冲突:若应用内包含小程序,需提供小程序方沟通证明,避免同一任务多端推送。
六、总结
实况窗服务通过多触点、无打扰的实时信息展示,极大提升了用户对服务进度的感知效率,尤其适用于出行、配送、赛事等高频场景。开发者只需遵循场景准入原则,完成权限申请、规范开发与充分测试,即可快速接入该服务。
后续可结合 HarmonyOS 的 “自由流转” 特性,实现实况窗在手机、平板等设备间的无缝切换,进一步提升跨设备用户体验。如需更多细节,可参考华为开发者联盟官方文档。
更多推荐




所有评论(0)