【鸿蒙实战开发】基于设置应用的应用权限、通知设置跳转

场景描述

引导用户跳转到系统设置页进行权限,通知的相关设置,类似android和iOS应用中常见的应用内跳转到设置进行通知开启或权限设置的操作。

应用经常会遇到如下的业务诉求:

场景一:如果应用首次拒绝了消息通知,应用希望能够引导用户拉起设置应用设置允许通知,用来接收应用内的推送消息;并且在设置完后返回页面可以监听到修改后的状态。

场景二:当用户使用一些需要用户授权的api时(如访问获取联系人信息),若用户首次拒绝授权,则需要引导用户到权限设置页面能够主动进行应用权限的修改。

场景三:支持打开/关闭系统功能如Wi-Fi、NFC、移动网络、蓝牙等。

方案描述

场景一:

如果应用首次拒绝了消息通知,应用希望能够引导用户拉起设置应用设置允许通知,用来接收应用内的推送消息;并且在设置完后返回页面可以监听到修改后的状态。

效果图

方案

1、通过startability显式拉起设置应用-通知管理界面,配置相应的want信息(不推荐使用隐式拉起的方式)。

2、在进入页面时通过Notification.requestEnableNotification()监听应用请求通知使能

核心代码

为Button绑定拉起事件

Button(this.buttonText).onClick(()=>{

  let context = getContext(this) as common.UIAbilityContext;

  let want: Want = {

    bundleName: 'com.huawei.hmos.settings',//设置应用bundleName

    abilityName: 'com.huawei.hmos.settings.MainAbility',//设置应用abilityName

    uri: "systemui_notification_settings",//通知管理页面

    parameters: {

      pushParams: {

        bundleName:context.abilityInfo.bundleName//拉起方应用包名

      }

    };

    context.startAbility(want)

  }).margin(10)

  Text(this.message)

在打开页面时获取通知管理中按钮状态,Notification.requestEnableNotification()请求发送通知的许可,第一次调用会弹窗让用户选择。

onPageShow(): void {

  Notification.requestEnableNotification().then(() => {

  //已打开通知

  this.message = "已允许接收消息推送。"

  this.buttonText = "去关闭通知"

  console.info("requestEnableNotification success");

}).catch((err:Error) => {

  //未打开通知

  this.message = "已禁止接收消息推送。"

  this.buttonText = "去开启通知"

  console.info("requestEnableNotification error");

});

}
<
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值