参考链接:
https://uniapp.dcloud.net.cn/api/system/getappauthorizesetting.html
https://uniapp.dcloud.net.cn/api/system/openappauthorizesetting.html
检测是否有推送权限
废话不多说,先上结论
// #ifdef APP-PLUS || MP-WEIXIN
/**
* 判断 App 推送权限是否开启
*/
function judgeAppPermissionPush(): boolean {
const notificationAuthorized = uni.getAppAuthorizeSetting().notificationAuthorized
return notificationAuthorized === 'authorized'
}
// #endif
是的,就是这么简单,uni-app 官方已经帮我们封装好了。
值得注意的是,该 API 仅支持在 App 和微信小程序端使用,需要做好条件编译
跳转系统授权管理页
如果没有得到授权的话,一般需要引导用户进行授权,此时需要跳转到系统授权的管理页。
参考代码如下:
// #ifdef APP-PLUS || MP-WEIXIN
// 跳转到应用的权限页面
function gotoAppPermissionSetting() {
uni.openAppAuthorizeSetting()
}
// #endif
和上一个 API 一样,都需要做好条件编译的兼容。
其他实现方式
最后再补充一下非官方的实现方式
判断 Android 推送权限是否开启
/**
* 判断 Android 推送权限是否开启
*/
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) { // 解决 Android 高版本没有 NotificationManagerCompat 的问题
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 跳转到应用的权限页面
// Android 跳转到应用的权限页面
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://wp.cmyr.ltd/archives/how-to-detect-app-notification-permission-in-uni-app
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道
发表回复
要发表评论,您必须先登录。