赞
踩
uniapp判断APP是否有通知权限,安卓和IOS都有。并跳转到开启通知页面
- /**
- * 获取通知状态
- */
- getNotificationStatus() {
- // #ifdef APP-PLUS
- let osName = plus.os.name.toLowerCase();
- if(osName == 'ios'){
- let UIApplication = plus.ios.import("UIApplication");
- let app = UIApplication.sharedApplication();
- let enabledTypes = 0;
- if (app.currentUserNotificationSettings) {
- let settings = app.currentUserNotificationSettings();
- enabledTypes = settings.plusGetAttribute("types");
- } else {
- //针对低版本ios系统
- enabledTypes = app.enabledRemoteNotificationTypes();
- }
- plus.ios.deleteObject(app);
- if (0 == enabledTypes) {
- // 未开启通知
- uni.$showModal({
- title: "提示",
- content: '开启通知权限后才能收到提示消息哦。',
- delCancel: false,
- confirmVal: '去开启',
- cancelVal: '取消',
- }).then(res => {
- let UIApplication = plus.ios.import("UIApplication");
- let NSURL = plus.ios.import("NSURL");
- let setting = NSURL.URLWithString("app-settings:");
- let application = UIApplication.sharedApplication();
- application.openURL(setting);
- plus.ios.deleteObject(setting);
- plus.ios.deleteObject(application);
- });
- }
- }else if(osName == 'android'){
- let main = plus.android.runtimeMainActivity();
- let NotificationManagerCompat = plus.android.importClass(
- "androidx.core.app.NotificationManagerCompat");
- let pkName = main.getPackageName();
- let packageNames = NotificationManagerCompat.from(main);
- let notificationEnabled = packageNames.areNotificationsEnabled();
- if(!notificationEnabled){
- // 未开启通知
- uni.$showModal({
- title: "提示",
- content: '开启通知权限后才能收到提示消息哦。',
- delCancel: false,
- confirmVal: '去开启',
- cancelVal: '取消',
- }).then(res => {
- let uid = main.getApplicationInfo().plusGetAttribute("uid");
- let Intent = plus.android.importClass('android.content.Intent');
- let Build = plus.android.importClass("android.os.Build");
- let intent = '';
-
- console.log("Androd SDK_INT:" + Build.VERSION.SDK_INT);
-
- if (Build.VERSION.SDK_INT >= 26) { // android 8.0引导
- 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
- intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
- intent.putExtra("app_package", pkName);
- intent.putExtra("app_uid", uid);
- } else { //(<21)其他--跳转到该应用管理的详情页
- let Settings = plus.android.importClass("android.provider.Settings");
- let Uri = plus.android.importClass("android.net.Uri");
- intent = new Intent();
- intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- let uri = Uri.fromParts("package", main.getPackageName(), null);
- intent.setData(uri);
- }
- // 跳转
- main.startActivity(intent);
- });
- }
- }
- // #endif
- },
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
uni.$showModal 是自己写的全局弹窗。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。