2023-08-15 如何在 uni-app 中检测 APP 端是否有通知权限
参考链接:
https://uniapp.dcloud.net.cn/api/system/getappauthorizesetting.html
https://uniapp.dcloud.net.cn/api/system/openappauthorizesetting.html
检测是否有推送权限
废话不多说,先上结论
1 2 3 4 5 6 7 8 9
   | 
 
 
  function judgeAppPermissionPush(): boolean {     const notificationAuthorized = uni.getAppAuthorizeSetting().notificationAuthorized     return notificationAuthorized === 'authorized' }
 
 
  | 
 
是的,就是这么简单,uni-app 官方已经帮我们封装好了。
值得注意的是,该 API 仅支持在 App 和微信小程序端使用,需要做好条件编译
![image-20230815211225739]()
跳转系统授权管理页
如果没有得到授权的话,一般需要引导用户进行授权,此时需要跳转到系统授权的管理页。
参考代码如下:
1 2 3 4 5 6
   | 
  function gotoAppPermissionSetting() {     uni.openAppAuthorizeSetting() }
 
 
  | 
 
和上一个 API 一样,都需要做好条件编译的兼容。
其他实现方式
最后再补充一下非官方的实现方式
判断 Android 推送权限是否开启
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | 
 
  function judgeAndroidPermissionPush(): boolean {     const main = plus.android.runtimeMainActivity() as any     let NotificationManagerCompat = plus.android.importClass('android.support.v4.app.NotificationManagerCompat') as any     if (NotificationManagerCompat === null) {          NotificationManagerCompat = plus.android.importClass('androidx.core.app.NotificationManagerCompat')     }     const manager = NotificationManagerCompat.from(main)     const areNotificationsEnabled = plus.android.invoke(manager, 'areNotificationsEnabled') as boolean     return areNotificationsEnabled }
 
 
  | 
 
Android 跳转到应用的权限页面
1 2 3 4 5 6 7 8 9 10 11 12
   |  function gotoAndroidAppPermissionSetting() {     const Intent = plus.android.importClass('android.content.Intent') as any     const Settings = plus.android.importClass('android.provider.Settings') as any     const Uri = plus.android.importClass('android.net.Uri') as any     const mainActivity = plus.android.runtimeMainActivity() as any     const intent = new Intent()     intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)     const uri = Uri.fromParts('package', mainActivity.getPackageName(), null)     intent.setData(uri)     mainActivity.startActivity(intent) }
 
  | 
 
iOS 版
iOS 版的实现由于没有设备进行试验,所以代码就不放出来了,可参考官方插件的实现。
但是由于官方插件年久失修,目前的可用性不高,请下载源码后自行调试一遍!!!
总结
本文介绍了 uni-app 官方提供的两个 API:uni.getAppAuthorizeSetting() 和 uni.openAppAuthorizeSetting(),它们可以分别用于检测和跳转到 APP 端的通知权限设置页面。
还提供了非官方的实现方式,主要针对 Android 平台,使用了 plus.android 模块和 Java 类库来实现相同的功能。
注意代码需要做好条件编译,因为这两个 API 只支持在 APP 和微信小程序端使用。
【总结由 New Bing 生成】
本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/545e0e03.html 
版权声明:本文采用 CC BY-NC-SA 4.0 协议 进行分发,转载请注明出处!