uniapp獲取手機(jī)通知權(quán)限實(shí)現(xiàn)demo
獲取通知權(quán)限跳轉(zhuǎn)開啟
之前發(fā)了一篇使用插件市場獲取權(quán)限的文章,但是有兄弟想要一個單獨(dú)開啟通知權(quán)限的教程,這篇文章特意整理一下獲取通知權(quán)限跳轉(zhuǎn)開啟的方法
設(shè)置彈窗通知
首先我是設(shè)置了一個彈窗通知,具體樣式就不在這里寫了,可以自行寫一個,我在這里就寫一下具體獲取以及跳轉(zhuǎn)的代碼
//首先我們需要一個觸發(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; //這里是我寫的一個彈窗上面有一個跳轉(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升級為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è)置對應(yīng)權(quán)限的頁面跳轉(zhuǎn)方法
Tips:
安卓手機(jī)由于系統(tǒng)新老版本不一樣,開啟權(quán)限的位置可能有所不同,需要根據(jù)實(shí)際情況來進(jìn)行修改,ios由于權(quán)限問題有可能會跳轉(zhuǎn)失敗,需要手動開啟
//開啟通知 openTongZhi() { //彈窗按鈕綁定方法 let platform = uni.getSystemInfoSync().platform; //獲取安卓還是ios this.tongzhi = false; if (platform == "ios") {//如果機(jī)型是ios,ios由于權(quán)限問題,可能需要手動開啟 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)限的方法了,如果有需要,大家可自行挪用,如有寫的不清楚的地方還請指出,更多關(guān)于uniapp獲取手機(jī)通知權(quán)限的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
javascript實(shí)現(xiàn)輸入框內(nèi)容提示及隱藏功能
這篇文章主要介紹了javascript實(shí)現(xiàn)輸入框內(nèi)容提示及隱藏功能,實(shí)現(xiàn)方法真的超簡單,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09JS 排序輸出實(shí)現(xiàn)table行號自增前端動態(tài)生成的tr
一個項(xiàng)目,需要對數(shù)據(jù)進(jìn)行排序輸出,要求有行號,依次遞增1.2.3.4.5,使用前端動態(tài)生成的tr2014-08-08Typescript tipe freshness 更嚴(yán)格對象字面量檢查
這篇文章主要為大家介紹了Typescript tipe freshness 更嚴(yán)格對象字面量檢查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊生成文字特效
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊生成文字特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12