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 和微信小程序端使用,需要做好条件编译
跳转系统授权管理页
如果没有得到授权的话,一般需要引导用户进行授权,此时需要跳转到系统授权的管理页。
参考代码如下:
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
版权声明:转载请注明出处!