小程式的許可權問題
小程式開發中不免要獲取使用者的許多資訊,而這些資訊又必須獲得使用者的同意,但是這些資訊一般只會請求一次(開啟小程式-小程式銷燬),之後會預設授權或預設拒絕授權,所以務必妥善處理。解決方案是可以通過使用者手動設定重新改寫許可權。以下將以獲取使用者位置許可權為例,其他許可權也可作為參考
目錄結構
|-----util
|---------util.js
|-----page
|---------location.js
|---------location.json
|---------location.wxml
|---------location.wxss
util.js程式碼
//獲取位置設定資訊
const GetSetting = (init,refused)=>{
init = typeof (init) === 'function' ? init : function (res) { };
refused = typeof (refused) === 'function' ? refused : function (res) { };
wx.getSetting({
success: (res) => {
console.log(res);
console.log(res.authSetting['scope.userLocation']);
if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
//非初始化進入該頁面,且未授權
wx.showModal({
title: '是否授權當前位置',
content: '需要獲取您的地理位置,請確認授權,否則無法獲取地址',
success: function (res) {
if (res.cancel) {
console.info("1授權失敗返回資料");
refused();
} else if (res.confirm) {
wx.openSetting({
success: function (data) {
console.log(data);
if (data.authSetting["scope.userLocation"] == true) {
wx.showToast({
title: '授權成功',
icon: 'success',
duration: 2000
})
} else {
wx.showToast({
title: '授權失敗',
icon: 'none',
duration: 2000
});
}
}
})
}
}
})
} else if (res.authSetting['scope.userLocation'] == true){
init();
} else if (res.authSetting['scope.userLocation'] == undefined) {
//初始化進入
init();
}
}
})
}
const GetLocation = (success,fail)=>{
success = typeof (success) === 'function' ? success : function (res) { };
fail = typeof (fail) === 'function' ? fail : function (res) { };
wx.getLocation({
type: 'wgs84',
success:success,
fail:fail
})
}
module.exports = { GetSetting, GetLocation}
複製程式碼
location.js
// pages/Quality/index.js
const util = require('../../utils/util');
Page({
/** * 頁面的初始資料 */
data: { },
setLocation(lat,lon){ },
/** * 生命週期函式--監聽頁面顯示 */
onShow: function () {
util.GetSetting(
() => {
console.log("進入獲取位置");
util.GetLocation((res) => {
//獲取使用者位置資訊成功
console.log('GetLocationSuccess:', res);
//此處獲取具體位置資訊this.setLocation(res.latitude, res.longitude)
},
(err) => {
//使用者拒絕提供位置許可權操作
console.log('GetLocationFial:', err);
//wx.switchTab({ url: '../newindex/index'})
})
} ,
()=>{
//使用者拒絕提供位置許可權操作
console.log('GetLocationFial:', err);
// wx.switchTab({url: '../newindex/index'})
}
)
}
})複製程式碼
可以設定許可權的列表
都是一些個人開發總結,不喜勿噴,謝謝