首页 > 其他分享 >Android(安卓)IOS(苹果)判断是否开启通知权限

Android(安卓)IOS(苹果)判断是否开启通知权限

时间:2023-04-06 15:46:06浏览次数:45  
标签:app ios 安卓 IOS NotificationManagerCompat plus var Android android

在首页onLoad调用permissions()方法;

this.permissions();

permissions()方法具体代码:

//判断是否有通知权限
            permissions () {
                // #ifdef APP-PLUS  
                if (plus.os.name == 'Android') {  // 判断是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");
                    if (NotificationManagerCompat == null){ 
                        NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat"); 
                    }
                    var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();
                    // 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置  
                    //console.log("通知状态",areNotificationsEnabled);
                    if (!areNotificationsEnabled) {
                        uni.showModal({
                            title:'通知权限开启提醒',
                            content:'您还没有开启通知权限,无法接受到消息通知,是否前往设置?',
                            confirmText:'去设置',
                            success: (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);
                                }
                            }
                        })
                    }
                } else if (plus.os.name == 'iOS') {   // 判断是ISO
                    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 = (0 != types);
                    if (isOn == false) {
                        uni.showModal({
                            title:'通知权限开启提醒',
                            content:'您还没有开启通知权限,无法接受到消息通知,是否前往设置?',
                            confirmText:'去设置',
                            success: (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);
                                }
                            }
                        })
                    }
                }
                // #endif  
            },

 

标签:app,ios,安卓,IOS,NotificationManagerCompat,plus,var,Android,android
From: https://www.cnblogs.com/zhangyouwu/p/17292934.html

相关文章

  • Android Api版本对照表
     Android版本ApiAPIAndroid13.0(T)32Android12.0(S)31Android11.0(R)30Android10.0(Q)29Android9.0(Pie)28Android8.1(Oreo)27Android8.0(Oreo)26Android7.1(Nougat)25Android7.0(Nougat)24Android6.0(Marshmallow)23......
  • ios17如何更新wxtxz.com
    相信大家已经迫不及待的想要更新ios17了吧,ios17拥有更多的功能可以给我们使用,今天我们就来看一下如何更新ios17版本,下面跟着步骤一起做就好了ios17如何更新:1、首先我们打开手机的设置。2、然后我们在设置中找到通用。3、接着我们就可以找到软件更新。4、最后手机就可以自动检......
  • 小程序兼容ios底部小黑条
    env()和constant(),是IOS11新增特性,用于设定与边界的距离,一共有4个变量:safe-area-inset-left:距离左边边界的距离safe-area-inset-right:距离右边边界的距离safe-area-inset-top:距离顶部边界的距离safe-area-inset-bottom:底部边界的距离在IOS11.2以前,可以使用constant()......
  • Linux IO实时监控iostat命令详解
    简介iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 语法iostat[-c][-d][-h][-N][-k|-m][-t][......
  • 在Android编程中,下拉刷新Webview
    1.添加支持库依赖项:在build.gradle文件中添加以下行以添加SwipeRefreshLayout支持库:implementation'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'2.在布局文件中添加SwipeRefreshLayout和WebView:<?xmlversion="1.0"encoding="utf-8"?><an......
  • 从Android手机中取出已安装的app包,导出apk
    从Android手机中取出已安装的app包,导出apkTAG:Android,提取,apk,adb,pm,root,导出apk假设有这样一个场景,A君看到你手机上一个实用APP,想要安装到自己手机上,限于下载浪费流量,那么最简单的就是从你的手机中拷贝一个,不过你安装过的apk包已经删除了,不能直接复制出来进行安装。办法来了,就是......
  • 解决"No toolchains found in the NDK toolchains folder for ABI with prefix: mips6
    版权声明:本文为博主原创文章,遵循 CC4.0BY-SA 版权协议,转载请附上原文出处链接和本声明。今天安装了AndroidStudio3.2,打开一个旧工程,编译提示"NotoolchainsfoundintheNDKtoolchainsfolderforABIwithprefix:mips64el-linux-android"网上也有解决办法,就是下载旧版......
  • Android 12蓝牙报java.lang.SecurityException: Need android.permission.BLUETOOTH_C
    报错如下:E/AndroidRuntime:FATALEXCEPTION:mainProcess:com.studay.base.study,PID:16798java.lang.SecurityException:Needandroid.permission.BLUETOOTH_CONNECTpermissionforAttributionSource{uid=10392,packageName=com.studay.base.study,a......
  • Android - 基础知识
     1. 四层架构、五块区域①Linux内核层(硬件驱动)②系统运行库层(C/C++库-特性支持;Android运行时库-Dalvik虚拟机)③应用框架层(API)④应用层(手机上的应用程序)         2.四大组件①Activity活动——应用中所有被用户看到的东西②Service服务—......
  • Swift是Android的未来么?
    最近Swift可以写Android的新闻炒的沸沸扬扬,我本身也关注着,不过对这种新闻不是很感冒,但是最近不少人都给我留言说「张哥,Swift可以写Android了,现在要开始学习了么?」、「Swift会取代Java么?我是新手,要不要直接学习Swift呢?」其实本来就是一则新闻,只不过两巨头的影响力,加上媒体的扩大,导致......