您的位置:首页技术文章
文章详情页

uniapp获取手机通知权限实现demo

【字号: 日期:2022-06-13 14:20:47浏览:4作者:猪猪
目录获取通知权限跳转开启设置弹窗通知Tips:获取通知权限跳转开启

之前发了一篇使用插件市场获取权限的文章,但是有兄弟想要一个单独开启通知权限的教程,这篇文章特意整理一下获取通知权限跳转开启的方法

设置弹窗通知

首先我是设置了一个弹窗通知,具体样式就不在这里写了,可以自行写一个,我在这里就写一下具体获取以及跳转的代码

//首先我们需要一个触发,我是在进入页面onReady()生命周期中触发的检测getQuanxian() {let platform = uni.getSystemInfoSync().platform; //首先判断app是安卓还是iosconsole.log(platform);if (platform == 'ios') { //这里是ios的方法 console.log('我是iOS'); var UIApplication = plus.ios.import('UIApplication'); var app = UIApplication.sharedApplication(); var enabledTypes = 0; if (app.currentUserNotificationSettings) {var settings = app.currentUserNotificationSettings();enabledTypes = settings.plusGetAttribute('types');console.log('enabledTypes1:' + enabledTypes);if (enabledTypes == 0) { //如果enabledTypes = 0 就是通知权限没有开启 this.tongzhi = true; //这里是我写的一个弹窗上面有一个跳转开启的按钮,自行添加即可} } plus.ios.deleteObject(settings);} else if (platform == 'android') { //下面是安卓的方法 console.log('我是安卓', plus.android); var main = plus.android.runtimeMainActivity(); var pkName = main.getPackageName(); var uid = main.getApplicationInfo().plusGetAttribute('uid'); var NotificationManagerCompat = plus.android.importClass('android.support.v4.app.NotificationManagerCompat' ); //android.support.v4升级为androidx if (NotificationManagerCompat == null) {NotificationManagerCompat = plus.android.importClass( 'androidx.core.app.NotificationManagerCompat'); } var areNotificationsEnabled =NotificationManagerCompat.from(main).areNotificationsEnabled(); // 未开通‘允许通知'权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置 if (!areNotificationsEnabled) {this.tongzhi = true; //这里也一样未开启权限,弹出弹窗 }} },

上面是根据手机操作系统来检测系统是否开启通知权限,下面代码是在检测没有开启通知权限后弹窗提示,然后点击弹窗按钮后到设置对应权限的页面跳转方法

Tips:

安卓手机由于系统新老版本不一样,开启权限的位置可能有所不同,需要根据实际情况来进行修改,ios由于权限问题有可能会跳转失败,需要手动开启

//开启通知 openTongZhi() { //弹窗按钮绑定方法let platform = uni.getSystemInfoSync().platform; //获取安卓还是iosthis.tongzhi = false;if (platform == 'ios') {//如果机型是ios,ios由于权限问题,可能需要手动开启 var UIApplication = plus.ios.import('UIApplication'); var app = UIApplication.sharedApplication(); var settings = app.currentUserNotificationSettings(); enabledTypes = settings.plusGetAttribute('types'); var NSURL2 = plus.ios.import('NSURL'); var setting2 = NSURL2.URLWithString('app-settings:'); var application2 = UIApplication.sharedApplication(); application2.openURL(setting2); plus.ios.deleteObject(setting2); plus.ios.deleteObject(NSURL2); plus.ios.deleteObject(application2); plus.ios.deleteObject(settings);} else if (platform == 'android') {//如果机型是安卓 var main = plus.android.runtimeMainActivity(); var pkName = main.getPackageName(); var uid = main.getApplicationInfo().plusGetAttribute('uid'); var Intent = plus.android.importClass('android.content.Intent'); var Build = plus.android.importClass('android.os.Build'); //android 8.0引导 if (Build.VERSION.SDK_INT >= 26) { //判断安卓系统版本var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');intent.putExtra('android.provider.extra.APP_PACKAGE', pkName); } else if (Build.VERSION.SDK_INT >= 21) { //判断安卓系统版本//android 5.0-7.0var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');intent.putExtra('app_package', pkName);intent.putExtra('app_uid', uid); } else {//(<21)其他--跳转到该应用管理的详情页intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);var uri = Uri.fromParts( 'package', mainActivity.getPackageName(), null);intent.setData(uri); } // 跳转到该应用的系统通知设置页 main.startActivity(intent);} },

以上就是在uniapp中开启通知权限的方法了,如果有需要,大家可自行挪用,如有写的不清楚的地方还请指出,更多关于uniapp获取手机通知权限的资料请关注好吧啦网其它相关文章!

标签: JavaScript