鸿蒙(HarmonyOS)应用开发——应用通知
let notificationRequest: notification.NotificationRequest = { // 描述通知的请求id: 1, // 通知IDcontent: { // 通知内容contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知normal: { // 基
·
简述
通知目的是为了让用户以合适的方式及时获取有用的新消息、帮助用户高效地处理任务
主要的使用场景
- 显示接收到的短信息,即时信息等
- 显示应用的推送消息,如广告、版本更新等
- 显示当前正在进行的事件。如下载
消息的结构
- 通知小图标
- 通知名称
- 时间
- 展开箭头
- 内容标题
- 内容详情
通知种类
基础类型通知
主要用于发送短信息,提示消息,广告推送等。开发的过程如下
导入模块
import notification from '@ohos.notificationManager';
定义内容
let notificationRequest: notification.NotificationRequest = { // 描述通知的请求
id: 1, // 通知ID
slotType: notification.SlotType.SERVICE_INFORMATION,
content: { // 通知内容
contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
normal: { // 基本类型通知内容
title: '通知内容标题',
text: '通知内容详情',
additionalText: '通知附加内容', // 通知附加内容,是对通知内容的补充。
}
}
}
添加通知发布时间
使用下面两个属性:
showDeliveryTime: true,
deliveryTime: new Date().getTime(),
完整的使用方式如下:
let notificationRequest: notification.NotificationRequest = { // 描述通知的请求
id: 1, // 通知ID
showDeliveryTime: true,
deliveryTime: new Date().getTime(),
slotType: notification.SlotType.SERVICE_INFORMATION,
content: { // 通知内容
contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
normal: { // 基本类型通知内容
title: '通知内容标题',
text: '通知内容详情',
additionalText: '通知附加内容', // 通知附加内容,是对通知内容的补充。
}
}
}
设置通知图标
import image from '@ohos.multimedia.image';
async publishBasicText(){
let imageArray = await getContext(this).resouceManger.getMediaContent("");
let imageResource = image.creatImageSource();
let opts=[desiredSize:{height:,width:}]
let large =await imageResource.createPixelMap(this)
let nR: notification.NotificationRequest ={
largerIcon: large,
smallIcon:large
}
}
设置操作按钮
属性部分的代码如下:
actionButtons: [
{
title: '回复',
wantAgent: wantAgentObj
}
]
完整代码
let notificationRequest: notification.NotificationRequest = { // 描述通知的请求
id: 1, // 通知ID
slotType: notification.SlotType.SERVICE_INFORMATION,
content: { // 通知内容
contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
normal: { // 基本类型通知内容
title: '通知内容标题',
text: '通知内容详情',
additionalText: '通知附加内容', // 通知附加内容,是对通知内容的补充。
}
},
actionButtons: [
{
title: '回复',
wantAgent: wantAgentObj
}
]
}
设置详情中大图
import image from '@ohos.multimedia.image';
// 将资源图片转化为PixelMap对象
let resourceManager = getContext(this).resourceManager;
let imageArray = await resourceManager.getMediaContent($r('app.media.bigPicture').id);
let imageResource = image.createImageSource(imageArray.buffer);
let pixelMap = await imageResource.createPixelMap();
picture: {
title: '通知内容标题',
text: '通知内容详情',
expandedTitle: '通知展开时的内容标题', // 通知展开时的内容标题
briefText: '通知概要内容,是对通知内容的总结', // 通知概要内容,是对通知内容的总结
picture: pixelMap // 通知的图片内容
发布通知
n.publish(nR).then(()=>{
}).catch((err)=>{
});
移除通知
notification.cancel(notificationId)
notification.cancelAll()
通知通道
用于设置通知的类型,只需要将类型slotType 设置为社交类型
slotType枚举值 | 说明 |
---|---|
SlotType.SOCIAL_COMMUNICATION | 社交类型,状态栏中显示通知图标,有横幅和提示音 |
SlotType.SERVICE_INFORMATION | 服务类型,状态栏中显示通知图标,没有横幅但有提示音 |
SlotType.CONTENT_INFORMATION | 内容类型,状态栏中显示通知图标,没有横幅或提示音 |
SlotType.OTHER_TYPES | 其它类型,状态栏中不显示通知图标,没有横幅或提示音 |
创建通知组
将不同类型的通知分为不同的组,以便用户可以更好的管理他们。当同组的通知有多条的时候,会自动折叠起来,避免通知比较多的时候,通知界面比较杂乱,例如当通知栏里有聊天消息通知和商品推荐通知时,我们只需要通过设置字段groupName
,就可以对通知进行分组,给groupName设置不同的值可以将通知分为不同的组
let chatRequest: notification.NotificationRequest = {
id: notifyId++,
groupName:'ChatGroup',
content: {
...
}
};
进度类型通知
判断是否支持
发布进度类型时,要先查询系统是否支持。
notification.isSupportTemplate('downloadTemplate').then((data) => {
console.info(`[ANS] isSupportTemplate success`);
let isSupportTpl: boolean = data; // isSupportTpl的值为true表示支持支持downloadTemplate模板类通知,false表示不支持
// ...
}).catch((err) => {
console.error(`[ANS] isSupportTemplate failed, error[${err}]`);
});
模版
let template = {
name: 'downloadTemplate',
data: {
progressValue: 60, // 当前进度值
progressMaxValue: 100 // 最大进度值
}
}
let notificationRequest = {
id: 1,
content: {
contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
normal: {
title: '文件下载:music.mp4',
text: 'senTemplate',
additionalText: '60%'
}
},
template: template
}
// 发布通知
notification.publish(notificationRequest).then(() => {
console.info(`publish success`);
}).catch(error => {
console.error(`[ANS] publish failed, code is ${error.code}, message is ${error.message}`);
})
更多推荐
已为社区贡献9条内容
所有评论(0)