使用uniapp開發小程序時,大致獲取授權及權限的操作如下:
這里以獲取位置信息為例,需要注意的是獲取位置信息時,需要在manifest.json文件中進行相應配置
manifest.json:
"permission": { "scope.userLocation": { "desc": "提示文字" } }
vue文件內部寫法:
<template>
<view>
<button @click="handleLocation">手動授權</button>
</view>
</template>
<script>
export default {
data() {
return {}
},
onLoad() {
// 初始化頁面,執行查看已授權信息
this.getSettingMess();
},
methods: {
// 執行函數
getSettingMess() {
// 獲取已授權類別
uni.getSetting({
success(res) {
if (res.authSetting['scope.userLocation']) {
console.log("userLocation位置功能已授權")
// 如果已授權,直接獲取對應參數
uni.getLocation({
success(res) {
console.log(res)
}
})
} else if (!res.authSetting['scope.userLocation']) {
// 說明此時要獲取的位置功能尚未授權,
// 則設置進入頁面時主動彈出,直接授權
uni.authorize({
scope: 'scope.userLocation',
success(res) {
// 授權成功
console.log(res)
// 成功后獲取對應的位置參數
uni.getLocation({
success(res) {
console.log(res)
}
})
},
fail() {
console.log("位置授權失敗")
}
})
}
},
fail() {
console.log("獲取授權信息授權失敗")
}
})
},
// 如果初始進入頁面時點擊了拒絕授權,如需要該權限,需要手動授權
// 手動授權的觸發方法
handleLocation() {
uni.getSetting({
success(res) {
if (res.authSetting['scope.userLocation']) {
// 再次判斷所需權限是否已授權,如已授權則直接使用
uni.getLocation({
success(res) {
console.log(res)
}
})
} else if (!res.authSetting['scope.userLocation']) {
// 如未授權則重新打開設置頁面,進行授權
uni.showModal({
//彈出提示框
title: '是否打開設置頁?',
content: '需要在設置中獲取xx信息和xx權限',
success(res) {
if (res.confirm) {
// 用戶點擊確定按鈕
uni.openSetting({
// 確認后打開設置頁面
success(res) {
if(res.authSetting['scope.userLocation']){
console.log("手動授權成功")
}else{
console.log("手動授權失敗")
}
},
fail(){
console.log("打開設置頁面失敗")
}
})
} else if (res.cancel) {
// 用戶點擊取消按鈕
console.log('用戶點擊取消');
}
},
fail(){
console.log("確認取消彈出未彈出")
}
});
}
},
fail(){
console.log("獲取已授權信息失敗")
}
})
}
}
}
</script>
附截圖:



