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.`);
    }
  }

}

使用案例找时间补充

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐