昭平县建设局网站,网站怎么申请域名,erp软件有哪些品牌,网站建设实训过程报告文章目录 一、通知介绍1、通知表现形式2、通知结构3、请求通知授权 二、创建通知1、发布基础类型通知2、发布进度类型通知3、更新通知4、移除通知 三、设置通知通道1、通知通道类型 四、创建通知组五、为通知添加行为意图1、导入模块。2、创建WantAgentInfo信息。4、创建WantAg… 文章目录 一、通知介绍1、通知表现形式2、通知结构3、请求通知授权 二、创建通知1、发布基础类型通知2、发布进度类型通知3、更新通知4、移除通知 三、设置通知通道1、通知通道类型 四、创建通知组五、为通知添加行为意图1、导入模块。2、创建WantAgentInfo信息。4、创建WantAgent对象。5、构造NotificationRequest对象。6、发布WantAgent通知。 一、通知介绍
通知旨在让用户以合适的方式及时获得有用的新消息帮助用户高效地处理任务。应用可以通过通知接口发送通知消息用户可以通过通知栏查看通知内容也可以点击通知来打开应用通知主要有以下使用场景
显示接收到的短消息、即时消息等。显示应用的推送消息如广告、版本更新等。显示当前正在进行的事件如下载等。
1、通知表现形式
通知会在不同场景以不同形式提示用户例如通知在状态栏上显示为图标、在通知栏上会显示通知详细信息。重要的信息还可以使用横幅通知浮动在界面顶部显示。 2、通知结构
下面以基础的文本通知为例介绍通知的基本结构。 通知小图标表示通知的功能与类型。 通知名称应用名称或功能名称。 时间发送通知的时间系统默认显示。 展开箭头点击标题区展开被折叠的内容和按钮。若无折叠的内容和按钮不显示此箭头。 内容标题描述简明概要。 内容详情描述具体内容或详情。
3、请求通知授权
应用需要获取用户授权才能发送通知。在通知发布前调用requestEnableNotification()方法弹窗让用户选择是否允许发送通知后续再次调用requestEnableNotification()方法时则不再弹窗。
导入NotificationManager模块。
import { notificationManager } from kit.NotificationKit;
import { BusinessError } from kit.BasicServicesKit;
import { common } from kit.AbilityKit;请求通知授权。
可通过requestEnableNotification的错误码判断用户是否授权。
let context getContext(this) as common.UIAbilityContext;
notificationManager.isNotificationEnabled().then((data: boolean) {console.info(isNotificationEnabled success);if(!data){notificationManager.requestEnableNotification(context).then(() {console.info(requestEnableNotification success);}).catch((err : BusinessError) {if(1600004 err.code){console.error(requestEnableNotification refused, code is ${err.code}, message is ${err.message});} else {console.error(requestEnableNotification failed, code is ${err.code}, message is ${err.message});}});}
}).catch((err : BusinessError) {console.error(isNotificationEnabled fail, code is ${err.code}, message is ${err.message});
});二、创建通知
本节将介绍几种常见类型通知的创建在创建通知前需要先导入notificationManager模块该模块提供通知管理的能力包括发布、取消发布通知创建、获取、移除通知通道等能力。
import { notificationManager } from kit.NotificationKit;1、发布基础类型通知
基础类型通知主要应用于发送短信息、提示信息、广告推送等支持普通文本类型、长文本类型、多行文本类型可以通过ContentType指定通知的内容类型。下面以普通文本类型为例来介绍基础通知的发布其它基础类型您可以查阅API。 发布普通文本类型通知需要设置ContentType类型为ContentType.NOTIFICATION_CONTENT_BASIC_TEXT。
Entry
Component
struct NotificationDemo { 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}); }); } build() { Column() { Button(发送通知) .onClick(() { this.publishNotification() }) } .width(100%) }
}2、发布进度类型通知
进度条通知也是常见的通知类型主要应用于文件下载、事务处理进度显示。目前系统模板仅支持进度条模板效果示意如下图所示 核心代码 /*** 查询系统是否支持进度条模板*/notificationManager.isSupportTemplate(downloadTemplate).then(isSupport {// isSupport的值为true表示支持downloadTemplate模板类通知false表示不支持this.isSupport isSupport;});/*** 开始下载*/download() {//通过定时器更新进度到通知this.interval setInterval(() {if (this.downloadProgress 100) {this.downloadStatus 3;this.notificationTitle 已完成clearInterval(this.interval);} else {this.downloadProgress 2}if (this.isSupport) {this.publishNotification(this.downloadProgress, this.notificationTitle, this.wantAgentObj);}}, 1000);}/*** 发布通知*/publishNotification(progress: number, title: string, wantAgentObj: object) {//构造进度条模板对象let template: notificationManager.NotificationTemplate {// 构造进度条模板name字段当前需要固定配置为downloadTemplatename: downloadTemplate,data: {title: ${title},fileName: 鸿蒙教程文件.zip,progressValue: progress,progressMaxValue: 100,isProgressIndeterminate: false}};let notificationRequest: notificationManager.NotificationRequest {id: 10000,//内容资讯notificationSlotType: notificationManager.SlotType.CONTENT_INFORMATION,template: template,content: {//普通类型通知notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,normal: {title: 鸿蒙教程文件.zip,text: ,additionalText: ${progress}%}},wantAgent: wantAgentObj};// 发布通知notificationManager.publish(notificationRequest).catch((err: Error) {console.error(publish failed,message is ${err});});}3、更新通知
在发出通知后使用您之前使用的相同通知ID再次调用notificationManager.publish来实现通知的更新。如果之前的通知是关闭的将会创建新通知。
4、移除通知 通过通知ID和通知标签取消已发布的通知。 notificationManager.cancel(notificationId) 取消所有已发布的通知。 notificationManager.cancelAll()
三、设置通知通道
通过通知通道您可让通知有不同的表现形式比如社交类型的通知是横幅显示的并且有提示音而一般的通知则不会横幅显示您可以使用slotType来实现设置slotType为SlotType.SOCIAL_COMMUNICATION表示为社交类型通知。
示例代码如下
notificationManager.addSlot(notificationManager.SlotType.SOCIAL_COMMUNICATION).then(() {console.info(addSlot success);
}).catch((err: Base.BusinessError) {console.error(addSlot fail: ${JSON.stringify(err)});
});效果图如下 1、通知通道类型
不同类型的通知渠道对应的通知提醒方式不同详见下表。其中Y代表支持N代表不支持。
四、创建通知组
将不同类型的通知分为不同的组以便用户可以更好的管理他们。当同组的通知有多条的时候会自动折叠起来避免通知比较多的时候通知界面比较杂乱例如当通知栏里有聊天消息通知和商品推荐通知时我们只需要通过设置字段groupName就可以对通知进行分组给groupName设置不同的值可以将通知分为不同的组。 您可以使用groupName来指定通知组来实现
示例代码如下
let notifyId 0; let chatRequest: notificationManager.NotificationRequest { id: notifyId, groupName:ChatGroup, content: { //... } }; let productRequest: notificationManager.NotificationRequest { id: notifyId, groupName: ProductGroup, content: { //... } };五、为通知添加行为意图
WantAgent提供了封装行为意图的能力这里所说的行为意图主要是指拉起指定的应用组件及发布公共事件等能力。给通知添加行为意图后点击通知后可以拉起指定的UIAbility或者发布公共事件您可以按照以下步骤来实现
1、导入模块。
import { notificationManager } from kit.NotificationKit;
import { wantAgent, WantAgent } from kit.AbilityKit;2、创建WantAgentInfo信息。
场景一拉起UIAbility。
let wantAgentInfo { wants: [ { bundleName: com.example.notification, abilityName: EntryAbility } ], operationType: wantAgent.OperationType.START_ABILITY, requestCode: 100
}场景二发布公共事件。
let wantAgentInfo { wants: [ { action: event_name, // 设置事件名 parameters: {}, } ], operationType: wantAgent.OperationType.SEND_COMMON_EVENT, requestCode: 100, wantAgentFlags: [wantAgent.WantAgentFlags.CONSTANT_FLAG],
}4、创建WantAgent对象。
let wantAgentObj null;
wantAgent.getWantAgent(wantAgentInfo) .then((data) { wantAgentObj data; }) .catch((err: Error) { console.error(get wantAgent failed because ${JSON.stringify(err)}); })5、构造NotificationRequest对象。
let notificationRequest: notificationManager.NotificationRequest {id: 1, content: { notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, normal: { title: 通知标题, text: 通知内容 } }, wantAgent: wantAgentObj
};6、发布WantAgent通知。
notificationManager.publish(notificationRequest).then(() { // 发布通知console.info(publish success);
}).catch((err: Error) { console.error(publish failed, code is ${err.code}, message is ${err.message});
}); 用户通过点击通知栏上的通知即可触发WantAgent的动作。