树叶云鸿蒙OS教程:鸿蒙OS 创建应用通知开发指导

接口介绍

通知相关基础类包含 [NotificationSlot]、[NotificationRequest] 和 [NotificationHelper]。详细的接口信息请参考通知开发指导。基础类之间的关系如下所示:

图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:表示通知发布后可在通知中心显示,自动弹出,触发提示音。
  • NotificationRequest

NotificationRequest 用于设置具体的通知对象,包括设置通知的属性,如:通知的小图标、自动删除等参数,以及设置具体的通知类型,如普通文本、长文本等。

通知的常用属性:

  • 小图标

标识说明:为通过 NotificationRequest.setLittleIcon(PixelMap)设置的小图标。

  • 从通知启动 Ability:点击通知栏的通知,可以通过启动 Ability,触发新的事件。

通知设置 NotificationRequest 的 setIntentAgent(IntentAgent) 后,点击通知栏上发布的通知,将触发通知中的 IntentAgent 承载的事件。IntentAgent 的设置请参考IntentAgent开发指导。

  • 通知设置 ActionButton:通过点击通知按钮,可以触发按钮承载的事件。

标识说明:、为两个通过 NotificationRequest.addActionButton(NotificationActionButton)设置的通知附加按钮,点击按钮后可以触发相关的事件,具体事件内容如何设置需要参考 NotificationActionButton。

具体的通知类型:目前支持三种类型,包括普通文本 NotificationNormalContent、长文本 NotificationLongTextContent、图片 NotificationPitctureContent。

  • 普通文本通知样式(NotificationNormalContent)

标识说明:为通知的标题,通过 NotificationNormalContent.setTitle(String)设置。为通知的内容,通过NotificationNormalContent.setText(String)设置。通知标题和内容至少要设置一个。

  • 长文本通知样式(NotificationLongTextContent)

标识说明:为通知的长文本,通过 NotificationLongTextContent.setLongText(String) 设置,文本长度最大支持1024个字符。

  • 图片通知样式(NotificationPictureContent)

标识说明: 为图片通知样式的图片,通过NotificationPictureContent.setBigPicture(PixelMap bigPicture)设置。

说明

通知发布后,通知的设置不可修改。如果下次发布通知使用相同的ID,就会更新之前发布的通知。

  • NotificationHelper

NotificationHelper封装了发布、更新、订阅、删除通知等静态方法。订阅通知、退订通知和查询系统中所有处于活跃状态的通知,有权限要求需为系统应用或具有订阅者权限。

开发步骤

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

创建NotificationSlot

NotificationSlot可以设置公共通知的提示声等,并通过调用NotificationHelper.addNotificationSlot()发布NotificationSlot对象。

// 创建notificationSlot对象
NotificationSlot slot = new NotificationSlot("slot_001","slot_default", NotificationSlot.LEVEL_DEFAULT); 
slot.setDescription("NotificationSlotDescription");
try {
    NotificationHelper.addNotificationSlot(slot);
} catch (RemoteException ex) {
    HiLog.warn(LABEL, "addNotificationSlot occur exception.");
}

发布通知

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

  1. 调用 setContent() 设置通知的内容。
   String title = "title";
   String text = "There is a normal notification content.";
   NotificationRequest.NotificationNormalContent content = new NotificationRequest.NotificationNormalContent();
   content.setTitle(title)
          .setText(text);
   NotificationRequest.NotificationContent notificationContent = new NotificationRequest.NotificationContent(content);
   // 设置通知的小图标
   request.setLittleIcon(PixelMap); 
   // 设置通知的内容
   request.setContent(notificationContent); 

  1. 调用 setIntentAgent() 设置通知可以触发的事件。
   // 指定要启动的ability的ElementName字段
   ElementName elementName = new ElementName("", "com.example.testintentagent", "com.example.testintentagent.IntentAgentAbility");
   // 将ElementName字段添加到Intent中
   Intent intent = new Intent();
   intent.setElement(elementName);
   List<Intent> intentList = new ArrayList<>();
   intentList.add(intent);
   // 指定启动一个有页面的ability
   IntentAgentInfo intenAgentinfo = new IntentAgentInfo(request.getNotificationId(), IntentAgentConstant.OperationType.START_ABILITY, IntentAgentConstant.Flags.UPDATE_PRESENT_FLAG, intentList, null);
   // 获取IntentAgent实例
   IntentAgent intentAgent = IntentAgentHelper.getIntentAgent(mContext, intenAgentinfo);
   request.setIntentAgent(intentAgent);
   request.setTapDismissed(true);

  1. 调用 publishNotification() 发送通知。
   try {
      NotificationHelper.publishNotification(request);
   } catch (RemoteException ex) {
      HiLog.warn(LABEL, "publishNotification occur exception.");
   }

取消通知

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

  • 调用 cancelNotification() 取消指定的单条通知。
  int notification_id = 1;
  try {
      NotificationHelper.cancelNotification(notification_id);
  } catch (RemoteException ex) {
      HiLog.warn(LABEL, "cancelNotification occur exception.");
  }

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/204704.html<

(0)
管理的头像管理
上一篇2025-04-07 06:53
下一篇 2025-04-07 06:54

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注