harmony 鸿蒙订阅通知(仅对系统应用开放)

2022-12-13 浏览 (951)

订阅通知(仅对系统应用开放)

应用需要接收通知,必须先发起订阅,通知子系统提供两种接口:订阅所有应用发布的通知和订阅某些应用发布的通知。

系统提供NotificationSubscriber对象,用于提供订阅成功、通知接收、通知取消、订阅取消等回调接口,将变化信息回调给订阅者。

通知订阅原理

通知业务流程由通知子系统、通知发送端、通知订阅端组成。一条通知从通知发送端产生,通过IPC通信发送到通知子系统,再由通知子系统分发给通知订阅端。

  • 通知发送端:可以是三方应用或系统应用。开发者重点关注。

  • 通知订阅端:只能为系统应用,比如通知中心。通知中心默认会订阅手机上所有应用对当前用户的通知。开发者无需关注。

图1 通知业务流程

notification_internal_principle

接口说明

通知订阅主要接口如下。详细接口介绍请参见API参考

表1 通知订阅接口介绍

接口名描述
subscribe(subscriber: NotificationSubscriber, info: NotificationSubscribeInfo, callback: AsyncCallback<void>): void订阅指定应用通知。
subscribe(subscriber: NotificationSubscriber, callback: AsyncCallback<void>): void订阅所有通知。

表2 通知订阅回调接口介绍

详细接口介绍请参见NotificationSubscriber

接口名描述
onConsume?: (data: SubscribeCallbackData) => void通知回调。
onCancel?: (data: SubscribeCallbackData) => void通知取消回调。
onUpdate?: (data: NotificationSortingMap) => void通知排序更新回调。
onConnect?: () => void;订阅成功回调。
onDisconnect?: () => void;取消订阅回调。
onDestroy?: () => void与通知子系统断开回调。
onDoNotDisturbDateChangedeprecated?: (mode: notification.DoNotDisturbDatedeprecated) => void免打扰时间选项变更回调(从API11起已废弃)。
onDoNotDisturbChanged?: (mode: notificationManager.DoNotDisturbDate) => void免打扰时间选项变更回调。
onEnabledNotificationChanged?: (callbackData: EnabledNotificationCallbackData) => void通知开关变更回调。
onBadgeChanged?: (data: BadgeNumberCallbackData) => void应用角标个数变化回调。

开发步骤

  1. 申请ohos.permission.NOTIFICATION_CONTROLLER权限,配置方式请参见申请应用权限

  2. 导入通知订阅模块。

    import { notificationSubscribe, notificationManager } from '@kit.NotificationKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    
    const TAG: string = '[SubscribeOperations]';
    const DOMAIN_NUMBER: number = 0xFF00;
    
  3. 创建订阅者对象。

    let subscriber:notificationSubscribe.NotificationSubscriber = {
      onConsume: (data:notificationSubscribe.SubscribeCallbackData) => {
        let req: notificationManager.NotificationRequest = data.request;
        hilog.info(DOMAIN_NUMBER, TAG, `onConsume callback. req.id: ${req.id}`);
      },
      onCancel: (data:notificationSubscribe.SubscribeCallbackData) => {
        let req: notificationManager.NotificationRequest = data.request;
        hilog.info(DOMAIN_NUMBER, TAG, `onCancel callback. req.id: ${req.id}`);
      },
      onUpdate: (data) => {
        hilog.info(DOMAIN_NUMBER, TAG, `onUpdate callback. req.id: ${data.sortedHashCode}`);
      },
      onConnect: () => {
        hilog.info(DOMAIN_NUMBER, TAG, `onConnect callback.`);
      },
      onDisconnect: () => {
        hilog.info(DOMAIN_NUMBER, TAG, `onDisconnect callback.`);
      },
      onDestroy: () => {
        hilog.info(DOMAIN_NUMBER, TAG, `onDestroy callback.`);
      },
    };
    
  4. 发起通知订阅。

    notificationSubscribe.subscribe(subscriber, (err: BusinessError) => { // callback形式调用异步接口
      if (err) {
        hilog.error(DOMAIN_NUMBER, TAG, `Failed to subscribe notification. Code is ${err.code}, message is ${err.message}`);
        return;
      }
    });
    

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Notification Kit(用户通知服务)

harmony 鸿蒙发布实况窗类型通知(仅对系统应用开放)

harmony 鸿蒙管理通知角标

harmony 鸿蒙取消通知

harmony 鸿蒙清除跨设备场景下的重复通知

harmony 鸿蒙通知消息跨设备协同管理(仅对系统应用开放)

harmony 鸿蒙跨设备协同通知概述

harmony 鸿蒙请求通知授权

harmony 鸿蒙Notification Kit简介

harmony 鸿蒙为跨设备协同通知添加快捷回复

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/d749031635a649c5a4898254f322d9b1