h5+ 檢測 APP 是否開啟應用通知權限


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM