1.问题描述:
获取应用是否开启了允许通知权限后,如何引导跳转开启权限通知的设置页面?
解决方案:
通过isNotificationEnabled方法查询通知是否授权,参考isNotificationEnabled用法。
2.若申请通知权限被拒绝后,后续调用requestEnableNotification()方法不再弹窗,同时会返回错误,错误码是1600004。具体参考请求通知授权。
3.如果想二次授权,可以调用openNotificationSettings申请授权,拉起通知管理弹窗或者引导用户跳转应用设置页面开启权限。
完整代码示例如下:
@Entry
@Component
struct NotificationPage {
aboutToAppear(): void {
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
notificationManager.isNotificationEnabled().then((data: boolean) => {
console.info("isNotificationEnabled success, data: " + data);
if (!data) {
let requestEnableNotificationCallback = (err: BusinessError): void => {
if (err) {
} else {
console.info(`requestEnableNotification success`);
notificationManager.requestEnableNotification(context, requestEnableNotificationCallback);
}).catch((err: BusinessError) => {
});
// 发布基本类型通知
publishBasicNotification() {
let notificationRequest: notificationManager.NotificationRequest = {
id: 1,
notificationSlotType: notificationManager.SlotType.SOCIAL_COMMUNICATION,
content: {
notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
normal: {
title: '基本型消息通知',
text: '通知内容XXXXXXX',
additionalText: 'TextXXXXXXX',
notificationManager.publish(notificationRequest, (err: BusinessError) => {
if (err) {
return;
console.info('Succeeded in publishing notification.');
});
notificationManager.setBadgeNumber(1)
build() {
Column() {
Button('基本通知')
.onClick(() => {
this.publishBasicNotification()
Button('二次授权')
.onClick(() => {
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
notificationManager.openNotificationSettings(context).then(() => {
console.info(`openNotificationSettings success`);
}).catch((err: BusinessError) => {
});
Button('点击进入应用设置页面')
.onClick(() => {
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
let want: Want = {
bundleName: 'com.huawei.hmos.settings',
abilityName: 'com.huawei.hmos.settings.MainAbility',
uri: 'application_info_entry',
parameters: {
pushParams: "com.example.myapplication" // 配置应用包名
context.startAbility(want).then(() => {
}).catch((err: BusinessError) => {
});
.alignItems(HorizontalAlign.Center)
.width('100%')
.height('100%')
2.问题描述:
使用notificationManager.openNotificationSettings接口打开的弹窗,如何监听弹窗关闭事件?
解决方案:
在页面打开应用通知设置页。
openNotificationSettings接口拉起的设置页面,页面关闭的时候没有回调方法可以直接使用,但是该接口拉起的页面关闭的时候,会触发其他页面聚焦的回调,在这个页面的根组件上注册的onfocus事件,在该回调内自定义一些操作,比如调用isNotificationEnabledSync()来查询应用通知的开启状态。具体实现代码如下:
...(已截断)
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289123.htm
【FAQ】HarmonyOS SDK 闭源开放能力 — Notification Kit
378 浏览
0 回复
暂无回复,快来抢沙发吧!