h5+ 检测 APP 是否开启应用通知权限

原文可查看此处,搜索 h5+ 检测 APP 是否开启应用通知权限

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=Mzg3NTAzMzAxNA==&scene=124#wechat_redirect

如果此链接在浏览器中无法打开,可将此链接发送给微信好友或者发送到微信文件传输助手。在点击打开


前置条件:
开发环境:windows
开发框架:uni-app , H5+
编辑器:HbuilderX
兼容版本:安卓5.0~9.0版本,IOS未作测试

此代码可以直接复制到uni-app项目中使用​

// 判断App是否打开了通知权限
noticeIsOpen(){
switch (uni.getSystemInfoSync().platform){
//判断安卓是否开通应用通知权限
case 'android':
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
var packageNames = NotificationManagerCompat.from(main);
//手机没有开启通知的权限
if (!packageNames.areNotificationsEnabled()) {
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var Intent = plus.android.importClass('android.content.Intent');
var Build = plus.android.importClass("android.os.Build");
uni.showModal({
title: '提示',
content: '检测到地毯汇应用未开启通知权限,请开启通知权限',
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
//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)其他--跳转到该应用管理的详情页
  var Settings = plus.android.importClass("android.provider.Settings");
  var Uri = plus.android.importClass("android.net.Uri");
  var intent = new Intent();
  intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  var uri = Uri.fromParts("package", main.getPackageName(), null);
  intent.setData(uri);
}
// 跳转到该应用的系统通知设置页
main.startActivity(intent);
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
} break;
//判断IOS是否开通应用通知权限
case 'ios':
// 识别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) {
plus.nativeUI.confirm("推送设置没有开启,是否去开启?", function(e) {
if (e.index == 0) {
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);
}
}, {
"buttons": ["Yes", "No"],
"verticalAlign": "center"
});
}
plus.ios.deleteObject(settings);
} else {
enabledTypes = app.enabledRemoteNotificationTypes();
if(enabledTypes == 0){
console.log("推送未开启!");
}else{
console.log("已经开启推送功能!")
}
console.log("enabledTypes2:" + enabledTypes);
}
plus.ios.deleteObject(app)
break;
default:
break;
}
}

h5+ 检测 APP 是否开启应用通知权限的更多相关文章

  1. H5唤起app

    H5唤起app 1.判断是否在微信中打开 无论是在哪个平台的客户端Android/IOS,在微信的平台上访问都有一个问题,那就是无法启动客户端,这是微信为了安全性考虑的限制,android这边屏蔽sc ...

  2. 通过页面调用APP【H5与APP互通】

    现在H5和App原生的内容原来越互通,所涉及的业务也越来越复杂和融合,所以如何互相之间方便的调用才是王道. 场景1 比如用hybrid获取地理位置和短信信息,这当然需要框架封装好,比如利用框架的bri ...

  3. 基础小功能之(1)震动,(2)检测app是否在前台运行

    //开启震动 //添加权限<uses-permission android:name="android.permission.VIBRATE" /> private v ...

  4. H5唤醒app,不完全兼容

    ---ps---最近新发现一个开源的H5唤醒app的库:建议使用第三方开源库https://github.com/suanmei/callapp-lib实现:或者极光魔链(后期可能会收费)https: ...

  5. 支付宝H5、APP支付服务端的区别(php)

    php支付宝H5和APP支付1.准备工作需要前往 蚂蚁金服开放平台申请https://openhome.alipay.com/developmentDocument.htm 2.大致流程1.用户添加商 ...

  6. 【转帖】H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...

  7. H5 直播 & App 直播

    H5 直播 & App 直播 polyv 直播 https://github.com/polyv 宝利威 直播 https://www.polyv.net/live/ SDK https:// ...

  8. 提前防止Non-PIE错误,检测app是否包含PIE标志

    //Howard 2013-07-19 //如何检测app是否包含PIE标志? 答:使用xCode自带的otool工具. otool程序在Xcode.app/Contents/Developer/us ...

  9. 微信公众号、H5、APP三者各有什么优势?

    昨天给大家分享了一个现在很热的H5,众所周知,当下H5手机网站.微信公众号.APP这三种载体都越来越火了,而且三者都有各自的一些优势和劣势. HTML5(H5) H5之所以能引发如此广泛的效应,根本在 ...

  10. MIUI12系统怎么样开启Root超级权限的流程

    MIUI12系统能有啥方法开启root超级权限?各位都清楚,Android机器有root超级权限,如果手机开启root相关权限,可以实现更好的功能,举例子,各位公司的营销部门,使用某些营销软件都需要在 ...

随机推荐

  1. 将 Rust 代码编译为 WASM

    前言 在现代 Web 开发中,WebAssembly (WASM) 已成为一种强大的工具.它使得开发者可以在浏览器中运行高性能的代码,跨越传统的 JavaScript 性能限制.Rust 语言因其高效 ...

  2. 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)

    2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛) 前言 补题只补了前四道,第五题打个暴力都有 \(24\) 分,我这死活只有 \(22\) 分 \(QAQ\) RC-u1 大家一起查 ...

  3. iframe出现双层滚动条解决方案

    在开发中出现一个iframe双滚动条问题,查了很多资料,网上的解决方案是定义iframe的onload事件,加载时重新加载高度,但是由于项目中页面渲染完成后,点击按钮动态生成数据,这时候上面的方案就不 ...

  4. 别再被坑了! JavaScript类型检测的最佳实践

    别再被坑了! JavaScript类型检测的最佳实践 在 JavaScript 中,我们经常需要判断一个变量的类型.这个需求在编程中非常常见,因为不同类型的数据会影响到我们的代码逻辑. JavaScr ...

  5. vba for excel 随笔

    q1: excel 没有vba入口 1. 快捷键:Alt + F11 2.调出开发工具 1. 打开文件后,依次点击菜单项[文件]-[选项]: 2.在"Excel"选项界面中点击左侧 ...

  6. 守护您的数字资产:API安全的最佳实践

    ​ 在数字化时代,API(应用程序编程接口)已成为企业与用户.服务与服务之间沟通的桥梁.然而,随着API的广泛应用,安全问题也日益凸显.本文将探讨API安全的重要性,并提供一些实用的安全措施,帮助您保 ...

  7. .NET 8 Moq mock GetRequiredKeyedService Setup报错

    .NET 8 Moq mock GetRequiredKeyedService Setup报错 代码有地方用到了IServiceProvider.GetRequiredKeyedService来解析服 ...

  8. get方法传参后端接收数据异常 - 特殊字符需转义

    get方法传参的时候,如果有特殊字符,如 + 等,无法被识别,导致后端处理异常,所以,get方式,如果有特殊字符,需要转义后再请求接口 1.java 特殊字符转义 URLEncoder.encode( ...

  9. 😶‍🌫️ SpringBoot中MongoDB的骚操作用法

    不知道大家在工作项目中有没有使用MongoDB,在哪些场景中使用.MongoDB作为NoSQL数据库,不像SQL数据库那样,可以使用Mybatis框架. 如果需要在SpringBoot中使用Mongo ...

  10. 【YashanDB数据库】YAS-00413 wait for receive timeout

    [问题分类]错误码处理 [关键字]yasql,00413 [问题描述]使用工具设置不同并发迁移数据的过程中,导致yasql登录报错:YAS-00413 wait for receive timeout ...