HarmonyOS 鸿蒙Next如何在app内申请允许通知权限?

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何在app内申请允许通知权限? 如何在app内申请允许通知权限?(麻烦提供一下demo)

如果用户拒绝了权限申请,下次进入页面判断用户没有打开通知开关时,如何手动跳转到设置->通知管理页面,让用户手动打开通知开关?

3 回复

可以参考https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/notification-enable-V5

导入`NotificationManager`模块。

```javascript
import { notificationManager } from '[@kit](/user/kit).NotificationKit';
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
import { hilog } from '[@kit](/user/kit).PerformanceAnalysisKit';
import { common } from '[@kit](/user/kit).AbilityKit';

const TAG: string = '[PublishOperation]';
const DOMAIN_NUMBER: number = 0xFF00;

请求通知授权。

可通过requestEnableNotification的错误码判断用户是否授权。若返回的错误码为1600004,即为拒绝授权。

let context = this as common.UIAbilityContext;
notificationManager.isNotificationEnabled().then((data: boolean) => {
  hilog.info(DOMAIN_NUMBER, TAG, "isNotificationEnabled success, data: " + JSON.stringify(data));
  if(!data){
    notificationManager.requestEnableNotification(context).then(() => {
      hilog.info(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification success`);
    }).catch((err : BusinessError) => {
      if(1600004 == err.code){
        hilog.error(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification refused, code is ${err.code}, message is ${err.message}`);
      } else {
        hilog.error(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification failed, code is ${err.code}, message is ${err.message}`);
      }
    });
  }
}).catch((err : BusinessError) => {
    hilog.error(DOMAIN_NUMBER, TAG, `isNotificationEnabled fail, code is ${err.code}, message is ${err.message}`);
});

可以通过isNotificationEnabled去查询是否开启,然后拉起设置页, 可以拉起权限设置页,但无法直接拉起通知管理页面。 通过want拉起设置应用,传入通知管理的uri:systemui_notification_settings即可。

更多关于HarmonyOS 鸿蒙Next如何在app内申请允许通知权限?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


import { bundleManager, common } from '@kit.AbilityKit';
import { notificationManager } from '@kit.NotificationKit';

async function checkPermissin() {
  try {
    const bundInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
    //检查权限
    const enabled = notificationManager.isNotificationEnabledSync();
    if (enabled === false) {
      //跳转设置界面
      const context = getContext() as common.UIAbilityContext
      context.startAbility({
        bundleName: 'com.huawei.hmos.settings', // 鸿蒙系统设置界面的包名 (固定的)
        abilityName: 'com.huawei.hmos.settings.MainAbility', // 鸿蒙系统设置的Ability的名字(固定的)
        uri: "application_info_entry", // 系统设置的界面 (固定的)
        parameters: {
          pushParams: bundInfo.name   // 从哪个包,弹出系统设置。
        }
      })
    } else {
      //有权限
    }
  } catch (err) {
  }
}

在HarmonyOS(鸿蒙)系统中,若想在应用内申请允许通知权限,可以按照以下步骤进行:

  1. 检查权限状态:首先,应用需要检查当前是否已经获得了通知权限。这可以通过调用系统API来查询当前权限状态。

  2. 申请权限:如果未获得通知权限,应用需要向用户发起权限申请。鸿蒙系统提供了相应的API接口,允许应用请求通知权限。在请求时,通常会弹出一个对话框让用户选择是否允许该应用发送通知。

  3. 处理用户响应:用户会根据自身需求选择允许或拒绝权限。应用需要监听用户的响应,并根据结果执行相应的逻辑。如果用户允许权限,应用即可正常发送通知;如果用户拒绝,应用可以选择提示用户该权限的重要性,或者在不获取该权限的情况下继续运行其他功能。

  4. 适配不同版本:由于鸿蒙系统可能会持续更新,应用开发者需要关注系统版本的差异,确保在不同版本的鸿蒙系统上都能正确申请和处理通知权限。

请注意,具体操作可能因鸿蒙系统的不同版本而有所差异。开发者应参考最新的鸿蒙开发文档和API指南来实现该功能。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部