核心内容摘要
拥抱新可能:当“男性孕产”遇上游戏,一场颠覆性体验的诞生
注意本章实现的为本地通知通知介绍通知分类根据内容样式划分分类维度具体类型说明与用途 按内容样式分类基础类型用于展示静态的文本或图片信息。
模板类型用于展示动态变化的内容最常见的是进度条。
基础通知分类这是最常用的通知类型根据contentType的不同又细分为以下几种样式具体类型 (contentType)样式特点适用场景举例普通文本包含标题、正文和附加文本的简单文本通知。
即时消息、简短提醒。
长文本可以展开查看详细长内容的通知。
邮件正文、长文章摘要。
多行文本在通知中直接并列显示多条简短信息。
聊天记录、待办事项列表。
图片可以附带一张图片的通知。
社交媒体、图片新闻。
根据通道类型划分通过通道类型对通知采取不同的管理策略如提示音、是否横幅弹出等。
常见类型有社交通讯、服务提醒、内容资讯等。
通道类型状态栏图标横幅提示提示音适用场景SOCIAL_COMMUNICATION✅✅✅社交类型通知SERVICE_INFORMATION✅❌✅服务类型通知CONTENT_INFORMATION✅❌❌新闻资讯OTHER_TYPES❌❌❌后台静默通知let notificationRequest: notificationManager.NotificationRequest { //社交类型通知 notificationSlotType: notificationManager.SlotType.SOCIAL_COMMUNICATION, // ... };通知表现形式通知会在不同场景以不同形式提示用户如下图。
例如通知在状态栏上显示为图标、在通知栏上会显示通知详细信息。
重要的信息还可以使用横幅通知浮动在界面顶部显示。
通知结构下面以基础的文本通知为例介绍通知的基本结构。
通知小图标表示通知的功能与类型。
通知名称应用名称或功能名称。
时间发送通知的时间系统默认显示。
展开箭头点击后展开/收起被折叠的内容和按钮。
若无折叠的内容和按钮不显示此箭头。
内容标题描述简明概要。
内容详情描述具体内容或详情。
通知组将不同类型的通知分为不同的组以便用户可以更好的管理他们。
当同组的通知有多条的时候会自动折叠起来避免通知比较多的时候通知界面比较杂乱。
let productRequest: notificationManager.NotificationRequest { id: notifyId, groupName: ProductGroup, content: { //... } };通知响应开发者通过给通知添加行为意图WantAgent来实现给通知添加响应事件。
比如当用户点击下载通知的时候可以快速拉起下载详情页面进行对下载任务的操作。
创建通知本节将介绍几种常见类型通知的创建在创建通知前需要先导入notificationManager模块该模块提供通知管理的能力包括发布、取消发布通知创建、获取、移除通知渠道等能力。
import { notificationManager } from kit.NotificationKit;发布基础类型通知基础类型通知主要应用于发送短信息、提示信息、广告推送等支持普通文本类型、长文本类型、多行文本类型可以通过ContentType指定通知的内容类型。
下面以普通文本类型为例来介绍基础通知的发布其它基础类型您可以查阅API。
发布普通文本类型通知需要设置ContentType类型为ContentType.NOTIFICATION_CONTENT_BASIC_TEXT。
说明应用需要获取用户授权才能发送通知。
在通知发布前调用requestEnableNotification()方法弹窗让用户选择是否允许发送通知后续再次调用requestEnableNotification()方法时则不再弹窗。
具体请查看请求通知授权。
publishNotification() { let notificationRequest: notificationManager.NotificationRequest { // 描述通知的请求 id: 1, // 通知ID content: { // 通知内容 notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知 normal: { // 基本类型通知内容 title: 通知内容标题, text: 通知内容详情 } } } notificationManager.publish(notificationRequest).then(() { // 发布通知 console.info(publish success); }).catch((err: Error) { console.error(publish failed,message is ${err}); }); }发布进度类型通知进度条通知也是常见的通知类型主要应用于文件下载、事务处理进度显示。
目前系统模板仅支持进度条模板。
在发布进度类型通知前需要查询系统是否支持进度条模板。
notificationManager.isSupportTemplate(downloadTemplate).then(isSupport { if (!isSupport) { this.getUIContext().getPromptAction().showToast({ message: $r(app.string.invalid_button_toast) }) } this.isSupport isSupport; });构造进度条模板name字段当前需要固定配置为downloadTemplate。
进度类型通知设置contentType类型为ContentType.NOTIFICATION_CONTENT_BASIC_TEXT。
let template:notificationManager.NotificationTemplate { name: downloadTemplate, data: { title: ${title}, fileName: ${title}${CommonConstants.DOWNLOAD_FILE}, progressValue: progress, progressMaxValue: CommonConstants.PROGRESS_TOTAL, isProgressIndeterminate: false } }; let notificationRequest: notificationManager.NotificationRequest { id: CommonConstants.NOTIFICATION_ID, notificationSlotType: notificationManager.SlotType.CONTENT_INFORMATION, // Construct a progress bar template. The name field must be set to downloadTemplate. template: template, content: { notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, normal: { title: ${title}${CommonConstants.DOWNLOAD_FILE}, text: , additionalText: ${progress}% } }, wantAgent: wantAgentObj }; notificationManager.publish(notificationRequest).catch((err: Error) { Logger.error([ANS] publish failed,message is ${err}); });具体代码可以参考进度条通知案例更新通知在发出通知后使用您之前使用的相同通知ID再次调用notificationManager.publish来实现通知的更新。
如果之前的通知是关闭的将会创建新通知。
移除通知通过通知ID和通知标签取消已发布的通知。
notificationManager.cancel(notificationId)取消所有已发布的通知。
notificationManager.cancelAll()