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; } }