鸿蒙HarmonyOS开发:用户通知服务Noification的详细使用指南

文章目录

一、Notification Kit简介

Notification Kit(用户通知服务)为开发者提供本地通知发布通道,开发者可借助Notification Kit将应用产生的通知直接在客户端本地推送给用户,本地通知根据通知类型及发布场景会产生对应的铃声、震动、横幅、锁屏、息屏、通知栏提醒和显示。

二、能力范围

Notification Kit支持的能力主要包括:

  • 发布文本、多行文本、通知大图标等类型通知。
  • 携带或更新应用通知数字角标。
  • 取消曾经发布的某条或全部通知。
  • 查询已发布的通知列表。
  • 查询应用自身通知开关状态。
  • 应用通知用户的能力默认关闭,开发者可拉起授权框,请求用户授权发布通知。

三、业务流程

使用Noification Kit的主要业务流程如下:

  1. 请求通知授权。
  2. 应用发布通知到通知服务。
  3. 将通知展示到通知中心。

四、通知样式:

五、约束限制

  • 单个应用已发布的通知在通知中心等系统入口的留存数量有限(当前规格最多24条)。
  • 通知的长度不能超过200KB(跨进程序列化大小限制)。
  • 系统所有应用发布新通知的频次累计不能超过每秒10条,更新通知的频次累计不能超过每秒20条。

六、开发步骤

6.1、导入模块。
复制代码
import notificationManager from '@ohos.notificationManager';
6.2、构造NotificationRequest对象,并发布通知。
6.2.1、普通文本类型。

普通文本类型通知由标题、文本内容和附加信息三个字段组成,其中标题和文本内容是必填字段。

javascript 复制代码
在这里插入代码片
javascript 复制代码
import notificationManager from '@ohos.notificationManager';

@Entry
@Component
struct Notification {
  build() {
    Column() {
      Button("普通文本")
        .onClick(() => {
          let notificationRequest = {
            id: 1,
            content: {
              contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
              normal: {
                title: 'test_title',
                text: 'test_text',
                additionalText: 'test_additionalText',
              },
            },
            deliveryTime: new Date().getTime(),
            showDeliveryTime: true
          }

          notificationManager.publish(notificationRequest, (err) => {
            if (err) {
              console.error(`[ANS] failed to publish, error[${err}]`);
              return;
            }
            console.info(`[ANS] publish success`);
          });
        })
    }
    .width('100%')
    .height('100%')
  }
}
6.2.2、长文本类型。

长文本类型通知继承了普通文本类型的字段,同时新增了长文本内容、内容概要和通知展开时的标题。通知默认显示与普通文本相同,展开后,标题显示为展开后标题内容,内容为长文本内容。

javascript 复制代码
import notificationManager from '@ohos.notificationManager';

@Entry
@Component
struct Notification {
  build() {
    Column() {
      Button("长文本")
        .onClick(() => {
          let notificationRequest = {
            id: 2,
            content: {
              contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_LONG_TEXT, // 长文本类型通知
              longText: {
                title: 'test_title',
                text: 'test_text',
                additionalText: 'test_additionalText',
                longText: 'test_longText test_longText test_longText test_longText test_longText test_longText',
                briefText: 'test_briefText',
                expandedTitle: 'test_expandedTitle',
              }
            }
          }

          notificationManager.publish(notificationRequest, (err) => {
            if (err) {
              console.error(`[ANS] failed to publish, error[${err}]`);
              return;
            }
            console.info(`[ANS] publish success`);
          });
        })
    }
    .width('100%')
    .height('100%')
  }
}
6.2.3、多行文本类型。

多行文本类型通知继承了普通文本类型的字段,同时新增了多行文本内容、内容概要和通知展开时的标题。通知默认显示与普通文本相同,展开后,标题显示为展开后标题内容,多行文本内容多行显示。

javascript 复制代码
import notificationManager from '@ohos.notificationManager';

@Entry
@Component
struct Notification {
  build() {
    Column() {
      Button("多行文本")
        .onClick(() => {
          let notificationRequest = {
            id: 3,
            content: {
              contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_MULTILINE, // 多行文本类型通知
              multiLine: {
                title: 'test_title',
                text: 'test_text',
                briefText: 'test_briefText',
                longTitle: 'test_longTitle',
                lines: ['line_01', 'line_02', 'line_03', 'line_04'],
              }
            }
          }

          notificationManager.publish(notificationRequest, (err) => {
            if (err) {
              console.error(`[ANS] failed to publish, error[${err}]`);
              return;
            }
            console.info(`[ANS] publish success`);
          });
        })
    }
    .width('100%')
    .height('100%')
  }
}
6.3、为通知添加行为意图

WantAgent提供了封装行为意图的能力,这里所说的行为意图主要是指拉起指定的应用组件及发布公共事件等能力。HarmonyOS支持以通知的形式,将WantAgent从发布方传递至接收方,从而在接收方触发WantAgent中指定的意图。例如,在通知消息的发布者发布通知时,通常期望用户可以通过通知栏点击拉起目标应用组件。为了达成这一目标,开发者可以将WantAgent封装至通知消息中,当系统接收到WantAgent后,在用户点击通知栏时触发WantAgent的意图,从而拉起目标应用组件。

javascript 复制代码
import notificationManager from '@ohos.notificationManager';
import wantAgent from '@ohos.app.ability.wantAgent';

@Entry
@Component
struct Notification {
  build() {
    Column() {
      Button("为通知添加行为意图")
        .onClick(async () => {
          // 通过WantAgentInfo的operationType设置动作类型。
          let wantAgentInfo = {
            wants: [
              {
                bundleName: 'com.example.myapplication',
                abilityName: 'EntryAbility',
                parameters: {}
              }
            ],
            operationType: wantAgent.OperationType.START_ABILITY,
            requestCode: 0,
            wantAgentFlags:[wantAgent.WantAgentFlags.CONSTANT_FLAG]
          }
          // 创建WantAgent
          let wantAgentObj = await wantAgent.getWantAgent(wantAgentInfo);

          let notificationRequest = {
            id: 4,
            content: {
              contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
              normal: {
                title: 'test_title4',
                text: 'test_text4',
                additionalText: 'test_additionalText4',
              },
            },
            deliveryTime: new Date().getTime(),
            showDeliveryTime: true,
            wantAgent: wantAgentObj,
          }

          notificationManager.publish(notificationRequest, (err) => {
            if (err) {
              console.error(`[ANS] failed to publish, error[${err}]`);
              return;
            }
            console.info(`[ANS] publish success`);
          });
        })
    }
    .width('100%')
    .height('100%')
  }
}
相关推荐
qq 180809517 小时前
无人船的Smith - PID跟踪控制探索
harmonyos
ok406lhq8 小时前
[鸿蒙2025领航者闯关] 我的鸿蒙SDK领航者养成记
华为·harmonyos·鸿蒙2025领航者闯关·鸿蒙6实战·开发者年度总结
嗝o゚11 小时前
Flutter 到鸿蒙开发:3个月技能迁移指南
flutter·华为·harmonyos
二流小码农12 小时前
鸿蒙开发:上架困难?谈谈我的上架之路
android·ios·harmonyos
luxy200412 小时前
HarmonyOS 5.0 AT指令4G透传控制器
华为·harmonyos
御承扬13 小时前
鸿蒙原生系列之动画效果(属性动画)
华为·harmonyos·动画效果
江澎涌13 小时前
JWorker——一套简单易用的基于鸿蒙 Worker 的双向 RPC 通讯机制
typescript·harmonyos·arkts
晚霞的不甘14 小时前
Flutter + OpenHarmony 国际化与无障碍(i18n & a11y)深度实践:打造真正包容的鸿蒙应用
flutter·华为·harmonyos
威哥爱编程1 天前
【鸿蒙开发案例篇】定点出击!鸿蒙6.0视频碰一碰流转+实时进度同步案例
harmonyos·arkts·arkui
嗝o゚1 天前
鱼与熊掌可兼得?用Flutter+鸿蒙的混合架构破解性能与UI的世纪难题
flutter·架构·harmonyos