uniapp獲取手機通知權限實現(xiàn)demo
獲取通知權限跳轉開啟
之前發(fā)了一篇使用插件市場獲取權限的文章,但是有兄弟想要一個單獨開啟通知權限的教程,這篇文章特意整理一下獲取通知權限跳轉開啟的方法
設置彈窗通知
首先我是設置了一個彈窗通知,具體樣式就不在這里寫了,可以自行寫一個,我在這里就寫一下具體獲取以及跳轉的代碼
//首先我們需要一個觸發(fā),我是在進入頁面onReady()生命周期中觸發(fā)的檢測
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();
// 未開通‘允許通知'權限,則彈窗提醒開通,并點擊確認后,跳轉到系統(tǒng)設置頁面進行設置
if (!areNotificationsEnabled) {
this.tongzhi = true; //這里也一樣未開啟權限,彈出彈窗
}
}
},上面是根據(jù)手機操作系統(tǒng)來檢測系統(tǒng)是否開啟通知權限,下面代碼是在檢測沒有開啟通知權限后彈窗提示,然后點擊彈窗按鈕后到設置對應權限的頁面跳轉方法
Tips:
安卓手機由于系統(tǒng)新老版本不一樣,開啟權限的位置可能有所不同,需要根據(jù)實際情況來進行修改,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) { //判斷安卓系統(tǒng)版本
var intent = new Intent("android.settings.APP_NOTIFICATION_SETTINGS");
intent.putExtra("android.provider.extra.APP_PACKAGE", pkName);
} else if (Build.VERSION.SDK_INT >= 21) { //判斷安卓系統(tǒng)版本
//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);
}
// 跳轉到該應用的系統(tǒng)通知設置頁
main.startActivity(intent);
}
},以上就是在uniapp中開啟通知權限的方法了,如果有需要,大家可自行挪用,如有寫的不清楚的地方還請指出,更多關于uniapp獲取手機通知權限的資料請關注腳本之家其它相關文章!
相關文章
javascript實現(xiàn)輸入框內容提示及隱藏功能
這篇文章主要介紹了javascript實現(xiàn)輸入框內容提示及隱藏功能,實現(xiàn)方法真的超簡單,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-09-09
JS 排序輸出實現(xiàn)table行號自增前端動態(tài)生成的tr
一個項目,需要對數(shù)據(jù)進行排序輸出,要求有行號,依次遞增1.2.3.4.5,使用前端動態(tài)生成的tr2014-08-08
Typescript tipe freshness 更嚴格對象字面量檢查
這篇文章主要為大家介紹了Typescript tipe freshness 更嚴格對象字面量檢查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10

