1# 请求通知授权 2 3应用需要获取用户授权才能发送通知。在通知发布前调用[requestEnableNotification()](../reference/apis-notification-kit/js-apis-notificationManager.md#notificationmanagerrequestenablenotification10-1)接口,弹窗让用户选择是否允许发送通知。当用户拒绝授权后,将无法通过该接口再次拉起弹窗。如果应用需要向用户再次申请通知授权,则可以使用[openNotificationSettings](../reference/apis-notification-kit/js-apis-notificationManager.md#notificationmanageropennotificationsettings13)接口拉起通知管理半模态弹窗。 4 5## 接口说明 6 7接口详情参见[API参考](../reference/apis-notification-kit/js-apis-notificationManager.md)。 8 9**表1** 通知授权接口功能介绍 10 11| **接口名** | **描述** | 12| -------- | -------- | 13| isNotificationEnabled():Promise\<boolean\> | 查询通知是否授权。 | 14| requestEnableNotification(context: UIAbilityContext): Promise\<void\> | 请求发送通知的许可,第一次调用会弹窗让用户选择。 | 15| openNotificationSettings(context: UIAbilityContext): Promise\<void\> | 拉起通知管理弹窗。| 16 17 18## 开发步骤 19 201. 导入NotificationManager模块。 21 22 ```ts 23 import { notificationManager } from '@kit.NotificationKit'; 24 import { BusinessError } from '@kit.BasicServicesKit'; 25 import { hilog } from '@kit.PerformanceAnalysisKit'; 26 import { common } from '@kit.AbilityKit'; 27 28 const TAG: string = '[PublishOperation]'; 29 const DOMAIN_NUMBER: number = 0xFF00; 30 ``` 31 322. 拉起通知弹窗,向用户请求通知授权。 33 34 可通过requestEnableNotification的错误码判断用户是否授权。若返回的错误码为1600004,即为拒绝授权。 35 36 ```ts 37 let context = this.getUIContext().getHostContext() as common.UIAbilityContext; 38 notificationManager.isNotificationEnabled().then((data: boolean) => { 39 hilog.info(DOMAIN_NUMBER, TAG, "isNotificationEnabled success, data: " + JSON.stringify(data)); 40 if(!data){ 41 notificationManager.requestEnableNotification(context).then(() => { 42 hilog.info(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification success`); 43 }).catch((err : BusinessError) => { 44 if(1600004 == err.code){ 45 hilog.error(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification refused, code is ${err.code}, message is ${err.message}`); 46 } else { 47 hilog.error(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification failed, code is ${err.code}, message is ${err.message}`); 48 } 49 }); 50 } 51 }).catch((err : BusinessError) => { 52 hilog.error(DOMAIN_NUMBER, TAG, `isNotificationEnabled fail, code is ${err.code}, message is ${err.message}`); 53 }); 54 ``` 55 563. (可选)拉起通知管理半模态弹窗,向用户再次申请通知授权。 57 58 ```ts 59 let context = this.getUIContext().getHostContext() as common.UIAbilityContext; 60 notificationManager.isNotificationEnabled().then((data: boolean) => { 61 hilog.info(DOMAIN_NUMBER, TAG, "isNotificationEnabled success, data: " + JSON.stringify(data)); 62 if(!data){ 63 notificationManager.openNotificationSettings(context).then(() => { 64 hilog.info(0x0000, 'testTag', `[ANS] openNotificationSettings success`); 65 }).catch((err: BusinessError) => { 66 hilog.error(0x0000, 'testTag', `[ANS] openNotificationSettings failed, code is ${err.code}, message is ${err.message}`); 67 }); 68 } 69 }) 70 ``` 71 72 73