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

 更新时间:2023年07月10日 10:41:06   作者:小李不小  
这篇文章主要为大家介绍了uniapp获取手机通知权限实现demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

获取通知权限跳转开启

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

设置弹窗通知

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

//首先我们需要一个触发,我是在进入页面onReady()生命周期中触发的检测
getQuanxian() {
                let platform = uni.getSystemInfoSync().platform; //首先判断app是安卓还是ios
                console.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; //获取安卓还是ios
                this.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.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);
                }
            },

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

相关文章

  • JS鼠标3次点击事件实现代码及扩展思路

    JS鼠标3次点击事件实现代码及扩展思路

    这篇文章主要介绍了JS鼠标3次点击事件实现及扩展思路,需要的朋友可以参考下
    2017-09-09
  • 一篇文章带你吃透JavaScript中的DOM知识及用法

    一篇文章带你吃透JavaScript中的DOM知识及用法

    DOM作用:用来修改网页内容,结构和样式,下面这篇文章主要给大家介绍了关于如何通过一篇文章带你吃透JavaScript中的DOM知识及用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • 使用js实现一个简单的滚动条过程解析

    使用js实现一个简单的滚动条过程解析

    这篇文章主要介绍了使用js实现一个简单的滚动条过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 教你javascript如何获取指针的位置

    教你javascript如何获取指针的位置

    这篇文章主要介绍了javascript获取指针的位置的方法,通过代码介绍了如何调用上面扩展函数 getMP() 捕获当前鼠标指针在文档中的位置,需要的朋友可以参考下
    2021-10-10
  • JavaScript实现与使用发布/订阅模式详解

    JavaScript实现与使用发布/订阅模式详解

    这篇文章主要介绍了JavaScript实现与使用发布/订阅模式,较为详细的分析了发布/订阅模式的概念、原理并结合实例形式分析了javascript实现与使用发布/订阅模式的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 一文分享10个被低估的JavaScript Web API

    一文分享10个被低估的JavaScript Web API

    这篇文章主要来和大家分享10个被低估的JavaScript Web API,其中一些可能是你的日常工具,但我敢肯定至少有几个会让你惊呼等等等,浏览器竟然有这功能
    2026-03-03
  • 基于bootstrap-datetimepicker.js不支持IE8的快速解决方法

    基于bootstrap-datetimepicker.js不支持IE8的快速解决方法

    下面小编就为大家带来一篇基于bootstrap-datetimepicker.js不支持IE8的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 用JavaScript实现使用鼠标画线的示例代码

    用JavaScript实现使用鼠标画线的示例代码

    用JavaScript实现用鼠标画线,具体步骤是首先是画点,在根据两点坐标画直线,最后是获取鼠标位置,需要的朋友可以参考下
    2014-08-08
  • JavaScript大数ID精度丢失问题的解决方案

    JavaScript大数ID精度丢失问题的解决方案

    在前后端分离的Web应用开发中,经常会遇到一个令人头疼的问题:JavaScript数字精度丢失,当后端使用Long类型生成的大数ID传递到前端时,会出现精度丢失,所以本文给大家介绍了JavaScript大数ID精度丢失问题解决方案,需要的朋友可以参考下
    2025-09-09
  • 微信小程序scroll-view实现字幕滚动

    微信小程序scroll-view实现字幕滚动

    这篇文章主要为大家详细介绍了微信小程序scroll-view实现字幕滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论