论坛首页 蓝队防御建设区 阅读主题

【FAQ】HarmonyOS SDK 闭源开放能力 — Notification Kit

378 浏览 0 回复
#1 楼主 2026-06-01 21:09:23
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

暂无回复,快来抢沙发吧!

请登录后参与讨论

立即登录 注册账号