HarmonyOS 通知学习笔记
·
HarmonyOS 通知学习笔记
所有内容均在代码中,注释详细:
import notification from '@ohos.notificationManager';
import { image } from '@kit.ImageKit';
// 使用方法:notificationManager.publish(notificationRequest, publishCallback);
export function publishNotification_normal() {
let notificationRequest: notification.NotificationRequest = {
id: 1, // 通知 ID
updateOnly: false,// 是否仅仅更新(默认为false)
notificationSlotType: notification.SlotType.OTHER_TYPES,// 通知渠道类型(默认为 OTHER_TYPES)
/**
* 通知内容
* UNKNOWN_TYPE 未知类型
* SOCIAL_COMMUNICATION 社交通信
* SERVICE_INFORMATION 服务提醒
* CONTENT_INFORMATION 内容资讯
* CUSTOMER_SERVICE 客服消息(需由用户主动发起)
* LIVE_VIEW 实况窗
* OTHER_TYPES 其他
*/
appMessageId: "messageId",// 用于多设备通知去重
isAlertOnce: false,// (默认为false:每次均按照配置的通知提醒方式提醒;如果为true:首次发布通知时进行提醒,后续更新该通知时,提醒方式变更实况窗)
sound: ' ',//自定义铃声文件名(resources/rawfile目录)
badgeNumber: 1,// 角标累加数
wantAgent: {},// WantAgent 封装应用的行为意图,点击通知时触发。
actionButtons: [{title: "title", wantAgent: {},extras: {},userInput: {inputKey: ""}}],// 通知按钮(最多支持2个)
removalWantAgent: {},// 移除应用时触发的意图(与wantAgent相比有限制)
tapDismissed: true,// 只有当通知含wantAgent、actionButtons时有效(默认为true,点击后通知自动清除)
autoDeletedTime: 10000,// 通知在指定时间后自动清除
//deliveryTime 系统将自动生成
//label: "",// 标签,功能近似id,建议使用id,倘若不为空,删除更新也需要对label进行处理
//smallIcon: " ",// image.PixelMap 小图标讲义128*128
//largeIcon
groupName: " ",// 通知分组,不同通知的groupName相同时,这些通知将成组展示
//template: {name: "downloadTemplate",data: {title: "title",fileName: "content",progressValue: 50}},// 通知模板
//当前仅支持 downloadTemplate 下载进度模板,title: 表示下载标题, fileName: 表示下载文件名,progressValue: 表示下载进度
//其余配置项(废弃或未开发完善)不展示
content: {
notificationContentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,//普通文本类型通知。
/**
* 通知内容类型(省略暂未支持类型)
* NOTIFICATION_CONTENT_BASIC_TEXT 普通文本类型通知。
* NOTIFICATION_CONTENT_LONG_TEXT 长文本类型通知。
* NOTIFICATION_CONTENT_PICTURE 图片类型通知。
* NOTIFICATION_CONTENT_MULTILINE 多行文本类型通知。
* NOTIFICATION_CONTENT_SYSTEM_LIVE_VIEW 系统实况窗类型通知
* NOTIFICATION_CONTENT_LIVE_VIEW 普通实况窗类型通知.(仅系统应用可用)
* */
// 基本类型通知内容
normal: {
title: "标题:title", // 显示的标题
text: "社交类型通知:SOCIAL_COMMUNICATION", // 显示的内容
additionalText: "通知附加内容:additionalText", // 描述
//lockscreenPicture: image.PixelMap // 锁屏图片
},
// 所有字段不能为空
/**
// 长文本类型通知内容
longText: { // 继承自 NotificationBasicContent,需包含normal中字段。
longText: "长文本类型通知:longText",
briefText: "长文本类型通知:briefText",// 通知概要内容,是对通知内容的总结
expandedTitle: "长文本类型通知:expandedTitle",// 通知展开时的标题
}
//图片类型通知内容
multiLine: {// 继承自 NotificationBasicContent,需包含normal中字段。
briefText: "图片类型通知:briefText", //通知概要内容,是对通知内容的总结
longTitle: "图片类型通知:longTitle", //通知展开时的标题
lines: [ // 通知的多行文本(最多支持三行)
"第一行",
"第二行",
"第三行",
]
},
// 图片类型通知内容
picture: {// 继承自 NotificationBasicContent,需包含normal中字段。
//picture: image.PixelMap, // 通知图片
briefText: "图片类型通知:briefText", // 通知概要内容,是对通知内容的总结
expandedTitle: "图片类型通知:expandedTitle", // 通知展开时的标题
},
// 实况窗类型通知内容
systemLiveView: { // 继承自 NotificationBasicContent,需包含normal中字段。
typeCode: 1, // 类型标识符,标记调用方业务类型。
capsule: { // 实况通知的胶囊
title: "系统实况窗类型通知:title",
//icon: image.PixelMap,
backgroundColor: "#000000",
},
button: { // (各项最多3个)
names: ["buttonName1", "buttonName2", "buttonName3"],
icons: [
//image.PixelMap,
//image.PixelMap,
//image.PixelMap,
],
iconsResource: [
//$r("app.media.icon1"),
//$r("app.media.icon2"),
//$r("app.media.icon3"),
],
},
time: { // NotificationTime 类型
initialTime: 1000, // 计时起始时间
isCountDown: false, // 是否倒计时
isPaused: false, // 是否暂停
isInTitle: false, // 是否在标题中显示
},
progress: { // 实况内容的进度
maxValue: 100, // 进度最大值
currentValue: 50, // 当前进度值
isPercentage: false, // 是否为百分比
}
},
**/
}
}
let publishCallback = (err: BusinessError): void => {
if (err) {
console.error(`Failed to publish notification. Code is ${err.code}, message is ${err.message}`);
} else {
console.info(`Succeeded in publishing notification.`);
}
}
}
使用案例找时间补充
更多推荐



所有评论(0)