uniapp-h5+获取通知栏权限
需求:控制消息栏的消息打开和关闭
控制消息栏的消息打开和关闭就需要获取手机系统,还有手机通知栏的打开情况
第一步我们先获取手机的系统,根据系统然后获取通知栏打开的状态
if (plus.os.name == 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"); } //areNotificationsEnabled 保存安卓通知栏打开的状态返回值为true或false var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled(); } else{ var isOn = undefined; var types = 0; var app = plus.ios.invoke(UIApplication, sharedApplication); var settings = plus.ios.invoke(app, currentUserNotificationSettings); if (settings) { types = settings.plusGetAttribute(types); plus.ios.deleteObject(settings); } else { types = plus.ios.invoke(app, enabledRemoteNotificationTypes); } plus.ios.deleteObject(app); //isOn 保存苹果通知栏打开的状态返回值为true或false isOn = (0 != types); }
第二步再根据返回的状态来打开通知栏
//安卓打开对应的通知栏 uni.showModal({ title: 通知权限开启提醒, content: 您还没有开启通知权限,无法接受到消息通知,请前往设置!, showCancel: false, confirmText: 去设置, success: function(res) { if (res.confirm) { 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.0 var 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); } } }); //苹果打开对应的通知栏 uni.showModal({ title: 通知权限开启提醒, content: 您还没有开启通知权限,无法接受到消息通知,请前往设置!, showCancel: false, confirmText: 去设置, success: function(res) { if (res.confirm) { var app = plus.ios.invoke(UIApplication, sharedApplication); var setting = plus.ios.invoke(NSURL, URLWithString:, app-settings:); plus.ios.invoke(app, openURL:, setting); plus.ios.deleteObject(setting); plus.ios.deleteObject(app); } } });