【鸿蒙开发】通知

本文介绍了HarmonyOS的AdvancedNotificationService通知系统,包括通知的常见使用场景、通知业务流程,以及如何发布基础类型通知(普通文本、长文本和多行文本)并添加行为意图,如点击通知启动应用。
摘要由CSDN通过智能技术生成

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%")
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值