为有牺牲多壮志,敢教日月换新天。

HarmonyOS:给应用添加通知(1)

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen
➤原文地址:https://www.cnblogs.com/strengthen/p/18502243
➤如果链接不是为敢技术的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

一、基础类型通知
1、通知:应用界面外显示的一条消息,用于向用户及时地提供重要信息,用户可以点按通知来打开应用或者直接从通知中执行操作。应用不需要在前台运行,通知主要有以下使用场景:
(1)、显示接收到的短消息、即时消息等。
(2)、显示应用等推送消息,如:广告、版本更新等。
(3)、显示当前正在进行的事件,如:下载等。

2、发布基础类型的文本通知:
基础类型通知主要用于发送短信息、提示信息、广告推送等,支持普通文本类型、长文本类型以及多行文本类型。在发送一个通知前,需要导入通知管理模块:
import { notificationManager } from '@kit.NotificationKit';
该模块提供了通知管理的能力,包括发布、取消发布通知等。通知内容的定义:NotificationRequest用于描述通知的请求,具体参数定义如下:
(1)、id:是通知的唯一标识符,可以用于通知的更新和取消,
(2)、contentType:定义了通知的内容类型,根据contentType的不同,可以将通知设置为普通文本类型通知、长文本类型通知和多行文本类型通知等。下图设置contentType为:NOTIFICATION_CONTENT_BASIC_TEXT,即表示普通的文本类型通知。
(3)、normal:定义了普通文本类型通知的内容,其中title定义了通知内容标题,text定义了通知的内容详情。
然后再使用publish方法来发布通知,这样一个基础的文本通知就完成了。

 3、自定义通知图标,比如在消息通知中显示联系人头像,可以使用largeIcon字段来进行设置,largeIcon的数据类型为PixlMap,可以使用image模块将图片资源文件转化为PixelMap对象,需要注意的是,通知大图标大小不超过30KB。

二、通知通道
对于一些比较重要的信息,比如社交信息,天气异常提醒或者其他重要的事情,可以使用横幅通知显示在屏幕顶部来引起用户的注意,这就需要使用通知通道。通道用于设置通知的类型,不同通道的通知表现形式会有所不同。只需要将通道类型slotType设置为社交类型:SOCIAL_COMMUNICATION即可实现,发送通知后,通知会在屏幕顶部悬浮5秒。不同的通道类型的通知,表现形式有所不同。

1、SOCIAL_COMMUNICATION 社交类型:状态栏中显示通知图标,有横幅和提示音。

2、SERVICE INFORMATION 服务类型:状态栏中显示通知图标,没有横幅但有提示音。

3、CONTENT INFORMATION 内容类型:状态栏中显示通知图标,没有横幅或提示音。

4、OTHER_TYPES 其他类型:状态栏中不显示通知图标,没有横幅或提示音。

三、通知组

当应用发送的通知的数量和种类比较多的时候,通知栏可能显得比较乱,将不同类型的通知分为不同的组,以便用户可以更好的管理它们。当同组的通知有多条的时候会自动折叠起来,避免通知比较多的时候,通知界面比较杂乱,例如:当通知栏里有聊天信息通知和商品推荐通知时,只需要通过设置字段:goupName,就可以对通知进行分组。给groupName设置不同的值,可以将通知分为不同的组。

四、进度类型通知
当下载文件的时候,通知栏有进度条通知来显示文件的下载进度,可以使用通知系统模块提供的进度条模版实现这个功能,代码实现步骤:
(1)、发布通知:
当点击下载按钮的时候,会调用download方法,在download方法中,我们使用定时器setInterval,来模拟文件下载任务,每一秒文件下载进度加二,当下载进度为100的时候,设置notificationTitle为文件下载完成,设置下载状态为FINISHED,同时调用clearInterval清除定时器任务,根据下载进度的变化,实时发送文件下载进度的通知。

在发送进度模版通知前,需要先使用isSupportTemplate方法,来判断系统是否支持该模版,进度条模版的名字为downloadTemplate,当isSupport为true的时候,调用publishNotification来发送通知。

在publishNotification方法中,先定义进度条模版通知的请求数据notificationRequest,这里和发布基础通知不同的是,在通知请求中设置template参数,template用于设置通知模版的类型,指定name为downloadTemplate,表示该模版为进度条类型,还需要指定progressValue值传入progress, 表示进度条当前的进度,设置进度条最大值progressMaxValue为100,然后设置通知的内容标题为传入参数title和文件名的拼接值,这里显示效果如下图所示,设置additionalText的值,表示当前下载进度的值。

再调用publish方法来发布通知,这样一个进度条类型的通知就发送成功了。

(2)、暂停下载:

当用户点击暂停按钮的时候,调用pause方法,设置通知标题的状态,为已暂停下载清除定时器,用来模拟暂停下载任务,同时设置下载状态为PAUSE,然后发送暂停文件下载的通知。

(3)、取消下载:
当用户点击取消按钮的时候,设置下载进度为0,取消定时器,同时设置下载状态为初始状态INITIAL,调用notificationManager.cancel方法取消通知。

五、为通知添加行为意图

当点击下载通知的时候,可以快速拉起下载详情页面,进行对下载任务的操作。实现方法:可以给通知添加行为意图WantAgent来实现,这里所说的行为意图主要是指拉起指定的应用组件及发布公共事件等能力,WantAgent提供了封装行为意图的能力。首先需要先创建一个行为意图,使用Content获取应用的包名和UIAbility名字。

然后使用刚才获取的应用包名和UIAbility创建WantAgent对象,指定意图操作类型为拉起一个UIAbility。

将WantAgent对象赋值给通知的请求参数wantAgent,这样当点击通知的时候,会拉起文件下载页面。

案例总体流程图,源码下载:DownloadNotification.zip

 
posted @ 2024-10-25 12:11  为敢技术  阅读(1)  评论(0编辑  收藏  举报