1. 通知简介
应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。
通知常见的使用场景:
-
显示接收到的短消息、即时消息等。
-
显示应用的推送消息,如广告、版本更新等。
-
显示当前正在进行的事件,如下载等。
HarmonyOS通过ANS(Advanced Notification Service,通知系统服务)对通知类型的消息进行管理,支持多种通知类型,如基础类型通知、进度条类型通知。
2. 通知业务流程
通知业务流程由通知子系统、通知发送端、通知订阅端组成。一条通知从通知发送端产生,通过IPC通信发送到通知子系统,再由通知子系统分发给通知订阅端。
-
通知发送端:可以是三方应用或系统应用。开发者重点关注。
-
通知订阅端:只能为系统应用,比如通知中心。通知中心默认会订阅手机上所有应用对当前用户的通知。开发者无需关注。
3. 发布基础类型通知
基础类型通知主要应用于发送短信息、提示信息、广告推送等,支持普通文本类型、长文本类型、多行文本类型和图片类型。
类型 | 描述 |
---|---|
NOTIFICATION_CONTENT_BASIC_TEXT | 普通文本类型。 |
NOTIFICATION_CONTENT_LONG_TEXT | 长文本类型。 |
NOTIFICATION_CONTENT_MULTILINE | 多行文本类型。 |
NOTIFICATION_CONTENT_PICTURE | 图片类型。 |
示例
发送通知、取消通知
import notificationManager from '@ohos.notificationManager'
@Entry
@Component
struct Index {
build() {
Column({ space: 5 }) {
Button("普通文本通知").onClick(() => {
const request: notificationManager.NotificationRequest = {
id: 1,
content: {
contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
normal: {
title: '温馨提示',
text: '您的话费还剩9元,请及时缴费',
additionalText: '移动提醒',
}
}
}
notificationManager.publish(request)
})
Button("长文本通知").onClick(() => {
const request: notificationManager.NotificationRequest = {
id: 2,
content: {
contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_LONG_TEXT,
longText: {
title: '长文本标题',
text: '长文本内容',
additionalText: '长文本附加内容',
longText: '长文本展开文字',
briefText: '长文本概要内容',
expandedTitle: '长文本展开标题',
}
}
}
notificationManager.publish(request)
})
Button("多行文本通知").onClick(() => {
const request: notificationManager.NotificationRequest = {
id: 3,
content: {
contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_MULTILINE,
multiLine: {
title: '多行标题',
text: '多行内容',
briefText: '多行概要内容',
longTitle: '多行展开标题',
lines: ['line_01', 'line_02', 'line_03', 'line_04'],
}
}
}
notificationManager.publish(request)
})
Button("取消普通文本通知").onClick(() => {
notificationManager.cancel(1)
})
}
.width("100%")
.height("100%")
}
}
普通文本通知
普通文本类型通知由标题、文本内容和附加信息三个字段组成,其中标题和文本内容是必填字段。
长文本通知
长文本类型通知继承了普通文本类型的字段,同时新增了长文本内容、内容概要和通知展开时的标题。通知默认显示与普通文本相同,展开后,标题显示为展开后标题内容,内容为长文本内容。
多行文本通知
多行文本类型通知继承了普通文本类型的字段,同时新增了多行文本内容、内容概要和通知展开时的标题。通知默认显示与普通文本相同,展开后,标题显示为展开后标题内容,多行文本内容多行显示。
4. 为通知添加行为意图
点击消息通知唤起应用
import notificationManager from '@ohos.notificationManager'
import WantAgent from '@ohos.app.ability.wantAgent'
@Entry
@Component
struct Index {
build() {
Column({ space: 5 }) {
Button("普通文本通知").onClick(async () => {
// WantAgent信息
const wantAgentInfo = {
wants: [
{
bundleName: 'com.example.myapplication',
abilityName: 'EntryAbility',
}
],
operationType: WantAgent.OperationType.START_ABILITIES,
requestCode: 0,
}
// 创建WantAgent
const want = await WantAgent.getWantAgent(wantAgentInfo);
// 发起普通文本通知
const request: notificationManager.NotificationRequest = {
id: 1,
content: {
contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
normal: {
title: '温馨提示',
text: '您的话费还剩9元,请及时缴费',
additionalText: '移动提醒',
}
},
// 点击通知时触发唤起应用
wantAgent: want
}
notificationManager.publish(request)
})
Button("取消普通文本通知").onClick(() => {
notificationManager.cancel(1)
})
}
.width("100%")
.height("100%")
}
}