HarmonyOS 鸿蒙Next推送代码哪一步会弹出推送权限的授权框,没看明白

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

HarmonyOS 鸿蒙Next推送代码哪一步会弹出推送权限的授权框,没看明白 鸿蒙推送代码哪一步会弹出推送权限的授权框,没看明白

4 回复

申请推送权限这一步,可以拉起弹窗,具体看下面代码,有注释:

import { notificationManager } from '@kit.NotificationKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';

function notificationPermission(context:common.UIAbilityContext) {
  notificationManager.isNotificationEnabled().then((data: boolean) => {
    console.info(`isNotificationEnabled success, data: ${JSON.stringify(data)}`);
    if (!data) {
      // 当前函数requestEnableNotification会拉起弹窗
      notificationManager.requestEnableNotification(context).then(() => {
        console.info(`requestEnableNotification success`)
      }).catch((err: BusinessError) => {
        if (1600004 == err.code) {
          console.info(`requestEnableNotification refused`);
        } else {
          console.error(`requestEnableNotification failed, code is ${err.code}, message is ${err.message}`);
        }
      });
    }
  }).catch((err: BusinessError) => {
    console.error(`isNotificationEnabled fail: ${JSON.stringify(err)}`);
  });
}

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  aboutToAppear(): void {
    let context = this as common.UIAbilityContext;
    // 通知授权
    notificationPermission(context)
  }
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: 'container', align: VerticalAlign.Center },
          middle: { anchor: 'container', align: HorizontalAlign.Center }
        })
    }
    .height('100%')
    .width('100%')
  }
}

开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中可以参考:https://gitee.com/scenario-samples/demo-index

更多关于HarmonyOS 鸿蒙Next推送代码哪一步会弹出推送权限的授权框,没看明白的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这个需要手动申请

requestEnableNotification

requestEnableNotification 方法是用于在鸿蒙操作系统(HarmonyOS)中请求发送通知的权限。这个方法需要在应用尝试发送通知之前调用,以确保应用已经获得了用户的授权。以下是关于这个方法的详细介绍和使用步骤:

方法功能 requestEnableNotification 方法属于 NotificationManager 模块,它允许应用请求系统给予发送通知的权限。第一次调用此方法时,系统会显示一个弹窗,让用户选择是否允许该应用发送通知。如果用户同意,应用将能够发送通知;如果用户拒绝,应用将无法发送通知,且再次调用此方法时不会重复弹窗询问。

接口用法 你可以通过以下方式调用 requestEnableNotification 方法:

import { notificationManager } from '@kit.NotificationKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { common } from '@kit.AbilityKit';

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

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

这个是在哪里看到的,为啥我在推送的文档里面没看到有这一段,直接就是申请token那步了。

在HarmonyOS(鸿蒙)系统中,推送代码涉及权限授权框的弹出,通常发生在系统请求应用推送通知权限时。具体步骤如下:

  1. 权限请求发起:当应用尝试进行通知推送时,系统会检查该应用是否已获得相应的通知权限。如果未获得,系统会发起权限请求。

  2. 权限授权框弹出:系统检测到权限缺失后,会自动弹出一个权限授权框,提示用户允许或拒绝应用获取通知权限。这个授权框通常包含应用的图标、名称以及请求的权限类型(即通知权限)。

  3. 用户操作:用户看到这个授权框后,可以选择“允许”或“拒绝”。如果用户选择“允许”,应用将获得通知权限,可以正常推送通知;如果用户选择“拒绝”,则应用无法推送通知,除非用户后续手动更改权限设置。

在鸿蒙系统的开发文档中,这部分流程通常会有详细的说明,包括如何在代码中发起权限请求、如何处理用户的授权结果等。如果你在具体实现过程中没看明白,可能是因为没有仔细阅读相关文档或代码示例。

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

回到顶部