HarmonyOS -通知开发指导

HarmonyOS -通知开发指导

场景介绍

HarmonyOS提供了通知功能,即在一个应用的UI界面之外显示的消息,主要用来提醒用户有来自该应用中的信息。当应用向系统发出通知时,它将先以图标的形式显示在通知栏中,用户可以下拉通知栏查看通知的详细信息。常见的使用场景:

  • 显示接收到短消息、即时消息等。
  • 显示应用的推送消息,如广告、版本更新等。
  • 显示当前正在进行的事件,如播放音乐、导航、下载等。

接口说明

通知相关基础类包含NotificationSlotNotificationRequestNotificationHelper

基础类之间的关系如下所示:

图1 通知基础类关系图

NotificationSlot

NotificationSlot可以对提示音、振动、重要级别等进行设置。一个应用可以创建一个或多个NotificationSlot,在发布通知时,通过绑定不同的NotificationSlot,实现不同用途。说明

NotificationSlot需要先通过NotificationHelper的addNotificationSlot(NotificationSlot)方法发布后,通知才能绑定使用;所有绑定该NotificationSlot的通知在发布后都具备相应的特性,对象在创建后,将无法更改这些设置,对于是否启动相应设置,用户有最终控制权。

不指定NotificationSlot时,当前通知会使用默认的NotificationSlot,默认的NotificationSlot优先级为LEVEL_DEFAULT。

  • NotificationSlot的级别目前支持如下几种, 由低到高:
    • LEVEL_NONE: 表示通知不发布。
    • LEVEL_MIN:表示通知可以发布,但不在状态栏显示,不自动弹出,无提示音;该级别不适用于前台服务的场景。
    • LEVEL_LOW:表示通知发布后在状态栏显示,不自动弹出,无提示音。
    • LEVEL_DEFAULT:表示通知发布后在状态栏显示,不自动弹出,触发提示音。
    • LEVEL_HIGH:表示通知发布后在状态栏显示,自动弹出,触发提示音。
  • NotificationRequestNotificationRequest用于设置具体的通知对象,包括设置通知的属性,如:通知的分发时间、小图标、大图标、自动删除等参数,以及设置具体的通知类型,如普通文本、长文本等。

具体的通知类型:目前支持六种类型,包括普通文本NotificationNormalContent、长文本NotificationLongTextContent、图片NotificationPictureContent、多行NotificationMultiLineContent、社交NotificationConversationalContent、媒体NotificationMediaContent。

NotificationHelperNotificationHelper封装了发布、更新、删除通知等静态方法。

开发步骤

通知的开发指导分为创建NotificationSlot、发布通知和取消通知等开发场景。

创建NotificationSlotNotificationSlot可以设置公共通知的震动,重要级别等,并通过调用NotificationHelper.addNotificationSlot()发布NotificationSlot对象。

NotificationSlot slot = new NotificationSlot("slot_001", "slot_default", NotificationSlot.LEVEL_MIN); // 创建notificationSlot对象
slot.setDescription("NotificationSlotDescription");
slot.setEnableVibration(true); // 设置振动提醒
slot.setEnableLight(true); // 设置开启呼吸灯提醒
slot.setLedLightColor(Color.RED.getValue());// 设置呼吸灯的提醒颜色
try {
   NotificationHelper.addNotificationSlot(slot);
} catch (RemoteException ex) {
   HiLog.error(LABEL, "Exception occurred during addNotificationSlot invocation.");
}

发布通知

  1. 构建NotificationRequest对象,应用发布通知前,通过NotificationRequest的setSlotId()方法与NotificationSlot绑定,使该通知在发布后都具备该对象的特征。
int notificationId = 1;
NotificationRequest request = new NotificationRequest(notificationId);
request.setSlotId(slot.getId());

调用setContent()设置通知的内容

String title = "title";
String text = "There is a normal notification content.";
NotificationNormalContent content = new NotificationNormalContent();
content.setTitle(title)
       .setText(text);
NotificationRequest.NotificationContent notificationContent = new NotificationRequest.NotificationContent(content);
request.setContent(notificationContent); // 设置通知的内容

调用publishNotification()发布通知。

try {
   NotificationHelper.publishNotification(request);
} catch (RemoteException ex) {
   HiLog.error(LABEL, "Exception occurred during publishNotification invocation.");
}

取消通知取消通知分为取消指定单条通知和取消所有通知,应用只能取消自己发布的通知。

  • 调用cancelNotification()取消指定的单条通知。
int notificationId = 1;
try {
    NotificationHelper.cancelNotification(notificationId);
} catch (RemoteException ex) {
    HiLog.error(LABEL, "Exception occurred during cancelNotification invocation.");
}

调用cancelAllNotifications()取消所有通知。

try {
    NotificationHelper.cancelAllNotifications();
} catch (RemoteException ex) {
    HiLog.error(LABEL, "Exception occurred during cancelAllNotifications invocation.");
}

相关实例

针对通知开发,有以下示例工程可供参考:

  • Notification通知功能,即在一个应用的UI界面之外显示的消息,主要用来提醒用户有来自该应用中的信息。本示例演示了如何发布通知和取消通知。
0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x