uniapp獲取手機(jī)通知權(quán)限實(shí)現(xiàn)demo
獲取通知權(quán)限跳轉(zhuǎn)開啟
之前發(fā)了一篇使用插件市場獲取權(quán)限的文章,但是有兄弟想要一個(gè)單獨(dú)開啟通知權(quán)限的教程,這篇文章特意整理一下獲取通知權(quán)限跳轉(zhuǎn)開啟的方法
設(shè)置彈窗通知
首先我是設(shè)置了一個(gè)彈窗通知,具體樣式就不在這里寫了,可以自行寫一個(gè),我在這里就寫一下具體獲取以及跳轉(zhuǎn)的代碼
//首先我們需要一個(gè)觸發(fā),我是在進(jìn)入頁面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 就是通知權(quán)限沒有開啟
this.tongzhi = true; //這里是我寫的一個(gè)彈窗上面有一個(gè)跳轉(zhuǎn)開啟的按鈕,自行添加即可
}
}
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升級(jí)為androidx
if (NotificationManagerCompat == null) {
NotificationManagerCompat = plus.android.importClass(
"androidx.core.app.NotificationManagerCompat"
);
}
var areNotificationsEnabled =
NotificationManagerCompat.from(main).areNotificationsEnabled();
// 未開通‘允許通知'權(quán)限,則彈窗提醒開通,并點(diǎn)擊確認(rèn)后,跳轉(zhuǎn)到系統(tǒng)設(shè)置頁面進(jìn)行設(shè)置
if (!areNotificationsEnabled) {
this.tongzhi = true; //這里也一樣未開啟權(quán)限,彈出彈窗
}
}
},上面是根據(jù)手機(jī)操作系統(tǒng)來檢測系統(tǒng)是否開啟通知權(quán)限,下面代碼是在檢測沒有開啟通知權(quán)限后彈窗提示,然后點(diǎn)擊彈窗按鈕后到設(shè)置對(duì)應(yīng)權(quán)限的頁面跳轉(zhuǎn)方法
Tips:
安卓手機(jī)由于系統(tǒng)新老版本不一樣,開啟權(quán)限的位置可能有所不同,需要根據(jù)實(shí)際情況來進(jìn)行修改,ios由于權(quán)限問題有可能會(huì)跳轉(zhuǎn)失敗,需要手動(dòng)開啟
//開啟通知
openTongZhi() { //彈窗按鈕綁定方法
let platform = uni.getSystemInfoSync().platform; //獲取安卓還是ios
this.tongzhi = false;
if (platform == "ios") {//如果機(jī)型是ios,ios由于權(quán)限問題,可能需要手動(dòng)開啟
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") {//如果機(jī)型是安卓
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引導(dǎo)
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)其他--跳轉(zhuǎn)到該應(yīng)用管理的詳情頁
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
var uri = Uri.fromParts(
"package",
mainActivity.getPackageName(),
null
);
intent.setData(uri);
}
// 跳轉(zhuǎn)到該應(yīng)用的系統(tǒng)通知設(shè)置頁
main.startActivity(intent);
}
},以上就是在uniapp中開啟通知權(quán)限的方法了,如果有需要,大家可自行挪用,如有寫的不清楚的地方還請(qǐng)指出,更多關(guān)于uniapp獲取手機(jī)通知權(quán)限的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS鼠標(biāo)3次點(diǎn)擊事件實(shí)現(xiàn)代碼及擴(kuò)展思路
這篇文章主要介紹了JS鼠標(biāo)3次點(diǎn)擊事件實(shí)現(xiàn)及擴(kuò)展思路,需要的朋友可以參考下2017-09-09
一篇文章帶你吃透JavaScript中的DOM知識(shí)及用法
DOM作用:用來修改網(wǎng)頁內(nèi)容,結(jié)構(gòu)和樣式,下面這篇文章主要給大家介紹了關(guān)于如何通過一篇文章帶你吃透JavaScript中的DOM知識(shí)及用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
使用js實(shí)現(xiàn)一個(gè)簡單的滾動(dòng)條過程解析
這篇文章主要介紹了使用js實(shí)現(xiàn)一個(gè)簡單的滾動(dòng)條過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
JavaScript實(shí)現(xiàn)與使用發(fā)布/訂閱模式詳解
這篇文章主要介紹了JavaScript實(shí)現(xiàn)與使用發(fā)布/訂閱模式,較為詳細(xì)的分析了發(fā)布/訂閱模式的概念、原理并結(jié)合實(shí)例形式分析了javascript實(shí)現(xiàn)與使用發(fā)布/訂閱模式的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
一文分享10個(gè)被低估的JavaScript?Web?API
這篇文章主要來和大家分享10個(gè)被低估的JavaScript?Web?API,其中一些可能是你的日常工具,但我敢肯定至少有幾個(gè)會(huì)讓你驚呼等等等,瀏覽器竟然有這功能2026-03-03
基于bootstrap-datetimepicker.js不支持IE8的快速解決方法
下面小編就為大家?guī)硪黄赽ootstrap-datetimepicker.js不支持IE8的快速解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
用JavaScript實(shí)現(xiàn)使用鼠標(biāo)畫線的示例代碼
用JavaScript實(shí)現(xiàn)用鼠標(biāo)畫線,具體步驟是首先是畫點(diǎn),在根據(jù)兩點(diǎn)坐標(biāo)畫直線,最后是獲取鼠標(biāo)位置,需要的朋友可以參考下2014-08-08
JavaScript大數(shù)ID精度丟失問題的解決方案
在前后端分離的Web應(yīng)用開發(fā)中,經(jīng)常會(huì)遇到一個(gè)令人頭疼的問題:JavaScript數(shù)字精度丟失,當(dāng)后端使用Long類型生成的大數(shù)ID傳遞到前端時(shí),會(huì)出現(xiàn)精度丟失,所以本文給大家介紹了JavaScript大數(shù)ID精度丟失問題解決方案,需要的朋友可以參考下2025-09-09
微信小程序scroll-view實(shí)現(xiàn)字幕滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了微信小程序scroll-view實(shí)現(xiàn)字幕滾動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07

