在 HarmonyOS 应用开发中,我们经常需要向用户展示一些耗时操作的进度,例如文件下载、数据同步等。HarmonyOS 的进度条通知基于模板机制。开发者首先需要查询系统是否支持所需的进度条模板,然后构建包含模板信息和具体数据的通知内容,最后调用通知管理器的接口发布通知。
开发步骤
1、导入模块
首先,我们需要导入 notificationManager
模块,以便使用其中的类和方法:
import NotificationManager from '@ohos.notificationManager';
2、查询模板支持
在构建进度条通知之前,我们需要先查询系统是否支持所需的模板。HarmonyOS 目前提供 downloadTemplate
模板用于展示下载进度。使用 isSupportTemplate
方法进行查询:
NotificationManager.isSupportTemplate('downloadTemplate').then((data) => {
console.info(`[ANS] isSupportTemplate success`);
console.info('Succeeded in supporting download template notification.');
let isSupportTpl: boolean = data; // isSupportTpl的值为true表示支持支持downloadTemplate模板类通知,false表示不支持
}).catch((err) => {
console.error(`Failed to support download template notification. Code is ${err.code}, message is ${err.message}`);
});
如果 isSupportTpl
的值为 true
,则表示系统支持 downloadTemplate
模板,我们可以继续后续步骤。
3、构造通知内容
接下来,我们需要构造一个 NotificationRequest
对象,用于描述通知的各项属性,包括进度条模板和数据:
let notificationRequest: notificationManager.NotificationRequest = {
id: 1, // 通知ID,用于标识不同的通知
content: { // 通知内容
contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 内容类型
normal: {
title: 'test_title', // 标题
text: 'test_text', // 内容文本
additionalText: 'test_additionalText' // 附加文本
}
},
// 进度条模板
template: {
name: 'downloadTemplate', // 模板名称,必须为 'downloadTemplate'
data: { // 模板数据
title: 'File Title', // 文件标题
fileName: 'music.mp4', // 文件名
progressValue: 45 // 下载进度值,范围 0-100
}
}
};
在 template
字段中,我们指定了模板名称 downloadTemplate
,并在 data
字段中设置了文件标题、文件名和下载进度值。
4、发布通知
最后,我们调用 NotificationManager
的 publish
方法发布通知:
notificationManager.publish(notificationRequest, (err) => {
if (err) {
console.error(`Failed to publish notification. Code is ${err.code}, message is ${err.message}`);
return;
}
console.info('Succeeded in publishing notification.');
});
发布成功后,用户将在通知栏看到一个包含进度条的通知,用于展示下载进度。