鸿蒙5.0&next开发【订阅关照】用户关照服务

打印 上一主题 下一主题

主题 998|帖子 998|积分 2994

应用必要吸收关照,必须先发起订阅,关照子体系提供两种接口:订阅所有应用发布的关照和订阅某些应用发布的关照。
体系提供[NotificationSubscriber]对象,用于提供订阅成功、关照吸收、关照取消、订阅取消等回调接口,将变化信息回调给订阅者。
关照订阅原理

关照业务流程由关照子体系、关照发送端、关照订阅端组成。一条关照从关照发送端产生,通过[IPC通讯]发送到关照子体系,再由关照子体系分发给关照订阅端。


  • 关照发送端:可以是三方应用或体系应用。开发者重点关注。
  • 关照订阅端:只能为体系应用,比如关照中心。关照中心默认会订阅手机上所有应用对当前用户的关照。开发者无需关注。
图1 关照业务流程

接口阐明

表1 关照订阅接口先容
接口名形貌subscribe(subscriber: NotificationSubscriber, info: NotificationSubscribeInfo, callback: AsyncCallback): void订阅指定应用关照。subscribe(subscriber: NotificationSubscriber, callback: AsyncCallback): void订阅所有关照。 表2 关照订阅回调接口先容
接口名形貌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应用角标个数变化回调。 开发步骤


  • 申请ohos.permission.NOTIFICATION_CONTROLLER权限
  • 导入关照订阅模块。
    1. import { notificationSubscribe } from '@kit.NotificationKit';
    2. import { BusinessError } from '@kit.BasicServicesKit';
    3. import { hilog } from '@kit.PerformanceAnalysisKit';
    4. const TAG: string = '[SubscribeOperations]';
    5. const DOMAIN_NUMBER: number = 0xFF00;
    6. ts
    复制代码
  • 创建订阅者对象。
    1. let subscriber:notificationSubscribe.NotificationSubscriber = {
    2.   onConsume: (data:notificationSubscribe.SubscribeCallbackData) => {
    3.     let req: notificationManager.NotificationRequest = data.request;
    4.     hilog.info(DOMAIN_NUMBER, TAG, `onConsume callback. req.id: ${req.id}`);
    5.   },
    6.   onCancel: (data:notificationSubscribe.SubscribeCallbackData) => {
    7.     let req: notificationManager.NotificationRequest = data.request;
    8.     hilog.info(DOMAIN_NUMBER, TAG, `onCancel callback. req.id: ${req.id}`);
    9.   },
    10.   onUpdate: (data) => {
    11.     hilog.info(DOMAIN_NUMBER, TAG, `onUpdate callback. req.id: ${data.sortedHashCode}`);
    12.   },
    13.   onConnect: () => {
    14.     hilog.info(DOMAIN_NUMBER, TAG, `onConnect callback.`);
    15.   },
    16.   onDisconnect: () => {
    17.     hilog.info(DOMAIN_NUMBER, TAG, `onDisconnect callback.`);
    18.   },
    19.   onDestroy: () => {
    20.     hilog.info(DOMAIN_NUMBER, TAG, `onDestroy callback.`);
    21.   },
    22. };
    23. ts
    复制代码
  • 发起关照订阅。
    1. notificationSubscribe.subscribe(subscriber, (err: BusinessError) => { // callback形式调用异步接口
    2.   if (err) {
    3.     hilog.error(DOMAIN_NUMBER, TAG, `Failed to subscribe notification. Code is ${err.code}, message is ${err.message}`);
    4.     return;
    5.   }
    6. });
    复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表