《HarmonyOSNext全链路通知开发指南:从基础通知到智能跳转的超详细实战》
【摘要】 《HarmonyOSNext全链路通知开发指南:从基础通知到智能跳转的超详细实战》##Harmony OS Next ##Ark Ts ##教育本文适用于教育科普行业进行学习,有错误之处请指出我会修改。 🚀 1. 通知是个啥?为啥需要它?通知就是让用户在合适的时间用最舒服的方式收到有用信息的神器!举个栗子🌰:收到闺蜜消息💬立刻弹窗提示游戏版本更新🆕在通知栏温柔提醒文件下载进度📥实...
《HarmonyOSNext全链路通知开发指南:从基础通知到智能跳转的超详细实战》
##Harmony OS Next ##Ark Ts ##教育
本文适用于教育科普行业进行学习,有错误之处请指出我会修改。
🚀 1. 通知是个啥?为啥需要它?
通知就是让用户在合适的时间用最舒服的方式收到有用信息的神器!举个栗子🌰:
- 收到闺蜜消息💬立刻弹窗提示
- 游戏版本更新🆕在通知栏温柔提醒
- 文件下载进度📥实时显示在状态栏
💡 核心价值:帮用户高效处理任务,不错过任何重要信息!
⚡️ 三大使用场景
场景类型 | 典型案例 | 用户收益 |
---|---|---|
即时通讯 | 微信消息/短信 | 秒回重要信息 |
应用推送 | 版本更新/促销广告 | 获取最新资讯 |
进程跟踪 | 文件下载/视频转码 | 实时掌握进度 |
🎨 2. 通知的百变造型
通知会根据场景自动切换皮肤哦~
📍 不同位置的颜值展示
graph LR
A[状态栏] -->|显示为小图标| B(📱微信)
C[通知栏] -->|展示详细信息| D(您有3条新消息)
E[横幅通知] -->|浮动在屏幕顶部| F(⚠️ 系统警告!)
✨ 设计心法:
- 重要通知用霸屏横幅(比如来电提醒)
- 普通通知进通知栏集合(比如软件更新)
- 长期进程放状态栏(比如音乐播放)
🧩 3. 通知的解剖图(文本通知为例)
graph TB
1[① 通知小图标] --> 类型标识
2[② 应用名称] --> 微信
3[③ 时间戳] --> 系统自动生成
4[④ 展开箭头] --> 折叠内容开关
5[⑤ 内容标题] -->“今晚聚餐!”
6[⑥ 内容详情] -->“海底捞7点见”
🚨 重点注意:
- 展开箭头只在有折叠内容时显示
- 时间戳无需手动设置,系统自动生成
👩💻 4. 手把手创建通知
第一步:召唤通知模块
// 必须加载的核心装备!
import { notificationManager } from '@kit.NotificationKit';
📝 场景一:发个普通文本通知
@Entry
@Component
struct NotificationDemo {
publishNotification() {
// 配置通知参数
let notificationRequest: notificationManager.NotificationRequest = {
id: 1, // 通知身份证号(必须唯一!)
content: {
notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
normal: {
title: '今晚有暴雨⛈️', // 标题要抓眼球!
text: '记得收衣服啦~' // 正文说人话
}
}
}
// 发射通知!
notificationManager.publish(notificationRequest).then(() => {
console.info('通知发射成功🎉');
}).catch((err: Error) => {
console.error(`翻车啦!原因:${err}`);
});
}
build() {
Column() {
Button('点我发通知🚀')
.onClick(() => { this.publishNotification() })
}
.width('100%')
}
}
💡 实用小技巧:
id
相当于通知的身份证,重复使用会覆盖旧通知- 想让通知更醒目?试试
长文本类型
和多行文本类型
📈 场景二:进度条通知(下载场景)
关键操作流程:
graph TB
A[检查系统支持] --> B{支持进度条?}
B -->|Yes| C[创建模板]
B -->|No| D[弹窗提示]
C --> E[发布通知]
完整代码示例:
// 先检测设备能力
notificationManager.isSupportTemplate('downloadTemplate').then(isSupport => {
if (!isSupport) {
// 优雅降级方案
promptAction.showToast({ message: '设备不支持进度条😭' })
return
}
// 配置进度条模板
let template: notificationManager.NotificationTemplate = {
name: 'downloadTemplate', // 必须用这个名称!
data: {
progressValue: 75, // 当前进度(0-100)
progressMaxValue: 100 // 总进度
}
}
// 组装通知
let notificationRequest: notificationManager.NotificationRequest = {
content: {
normal: {
title: '正在下载:猫猫表情包.zip',
text: '剩余5分钟',
additionalText: '75%' // 右上角百分比
}
},
template: template // 注入进度条
}
// 发射!
notificationManager.publish(notificationRequest)
})
🔄 动态更新通知
只需相同ID+新内容就能刷新通知:
// 更新下载进度到90%
template.data.progressValue = 90
notificationRequest.content.normal.additionalText = "90%"
// 还是用同一个ID发布
notificationManager.publish(notificationRequest)
🗑️ 删除通知的两种姿势
// 精准打击(按ID删除)
notificationManager.cancel(1)
// 核弹打击(清空所有通知)
notificationManager.cancelAll()
🔧 5. 通知的高级装备
🎛️ 通知通道设置(给通知分类)
// 创建社交类通知通道(带横幅+提示音)
notificationManager.addSlot(notificationManager.SlotType.SOCIAL_COMMUNICATION)
通道类型对比表:
通道类型 | 状态栏图标 | 横幅提示 | 提示音 | 适用场景 |
---|---|---|---|---|
SOCIAL_COMMUNICATION |
✅ | ✅ | ✅ | 微信/钉钉消息 |
SERVICE_INFORMATION |
✅ | ❌ | ✅ | 系统更新提示 |
CONTENT_INFORMATION |
✅ | ❌ | ❌ | 新闻资讯 |
OTHER_TYPES |
❌ | ❌ | ❌ | 后台静默通知 |
💡 省电流打法:非重要通知用
CONTENT_INFORMATION
省电又安静~
🧶 通知分组功能
把同类型通知打包处理:
// 聊天消息组
let chatRequest = {
id: 1001,
groupName: 'ChatGroup', // 组名就是分类标识
content: { title: '老王:在吗?' }
};
// 商品促销组
let productRequest = {
id: 2001,
groupName: 'PromotionGroup',
content: { title: '奶茶买一送一!' }
};
✨ 分组的好处:超过5条自动折叠,避免通知栏变垃圾场🗑️
🔗 6. 通知的智能跳转(WantAgent)
让通知变身超链接!点击通知可跳转页面或触发事件
🎯 场景一:点击跳转指定页面
import { wantAgent } from '@kit.AbilityKit';
// 配置跳转参数
const wantAgentInfo = {
wants: [{
bundleName: "com.example.app",
abilityName: "MainAbility" // 目标页面
}],
operationType: wantAgent.OperationType.START_ABILITY
}
// 绑定到通知
notificationRequest.wantAgent = await wantAgent.getWantAgent(wantAgentInfo)
📡 场景二:点击触发系统事件
// 配置公共事件
const eventConfig = {
wants: [{
action: 'LAUNCH_CAMERA', // 自定义事件名
}],
operationType: wantAgent.OperationType.SEND_COMMON_EVENT
}
⚙️ 完整工作流
sequenceDiagram
用户->>通知: 点击
通知->>WantAgent: 触发指令
WantAgent->>应用: 跳转页面
应用->>系统: 执行事件
🧾 终极总结表
功能 | 核心API | 使用场景 | 必做事项 |
---|---|---|---|
发文本通知 | publish() |
消息提醒 | 设置唯一ID |
进度条通知 | downloadTemplate |
下载/安装 | 检查设备支持 |
通知更新 | 同ID发布 | 进度更新 | 更新progressValue |
通知分组 | groupName |
分类管理 | 组名保持一致 |
智能跳转 | WantAgent |
页面跳转 | 配置operationType |
🚦 避坑指南:
- 进度值超过100%会闪退💥
- 社交类通知必须设置
SOCIAL_COMMUNICATION
通道- WantAgent需要在manifest.json声明权限
最后的小彩蛋🎉:
试试在横幅通知里加emoji,用户点击率提升37%!(例如:您收到一个红包🎁
)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)