我們在開發(fā)小程序時,有些操作必須讓用戶授權(quán)。比如我們獲取用戶位置,需要用戶授權(quán)位置信息。授權(quán)操作我們需要給用戶彈窗提示,在用戶禁用某些權(quán)限時,又要引導(dǎo)用戶去設(shè)置頁開啟相應(yīng)權(quán)限。我們這里就以獲取經(jīng)緯度為例,來帶大家學(xué)會友好的引導(dǎo)用戶授權(quán)。
老規(guī)矩,先看效果圖
一,我們使用位置信息,就需要授權(quán) //校驗位置權(quán)限是否打開
checkLocation() {
let that = this;
//選擇位置,需要用戶授權(quán)
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {
wx.authorize({
scope: 'scope.userLocation',
success() {
wx.showToast({ //這里提示失敗原因
title: '授權(quán)成功!',
duration: 1500
})
},
fail() {
that.showSettingToast('需要授權(quán)位置信息');
}
})
}
}
})
},
首先檢驗用戶是否授權(quán)位置信息的權(quán)限“scope.userLocation”,如果有授權(quán),我們就可以直接去獲取用戶的位置經(jīng)緯度了。如果沒有授權(quán),我們就彈窗引導(dǎo)用戶去設(shè)置頁。去設(shè)置頁的方法如下
// 打開權(quán)限設(shè)置頁提示框
showSettingToast: function (e) {
wx.showModal({
title: '提示!',
confirmText: '去設(shè)置',
showCancel: false,
content: e,
success: function (res) {
if (res.confirm) {
wx.navigateTo({
url: '../setting/setting',
})
}
}
})
},
由于去設(shè)置頁,需要用戶手動觸發(fā),這里我們就用一個setting.wxml頁作為過過渡頁。
我們這個過渡頁的按鈕,用戶點擊后就會去真正的授權(quán)頁了。
當用戶開啟地理位置授權(quán)后。我們再點擊獲取位置,就可以獲取到用戶當前的經(jīng)緯度了。
完整代碼如下
//index.js
Page({
getLocation() {
this.checkLocation();
let that = this;
wx.chooseLocation({
success: function(res) {
var latitude = res.latitude
var longitude = res.longitude;
that.setData({
address: "經(jīng)緯度:" + longitude + ", " + latitude,
})
}
});
},
//校驗位置權(quán)限是否打開
checkLocation() {
let that = this;
//選擇位置,需要用戶授權(quán)
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {
wx.authorize({
scope: 'scope.userLocation',
success() {
wx.showToast({ //這里提示失敗原因
title: '授權(quán)成功!',
duration: 1500
})
},
fail() {
that.showSettingToast('需要授權(quán)位置信息');
}
})
}
}
})
},
// 打開權(quán)限設(shè)置頁提示框
showSettingToast: function (e) {
wx.showModal({
title: '提示!',
confirmText: '去設(shè)置',
showCancel: false,
content: e,
success: function (res) {
if (res.confirm) {
wx.navigateTo({
url: '../setting/setting',
})
}
}
})
},
})
還有我們授權(quán)必須再app.json里注冊相關(guān)權(quán)限。如我的app.json如下
{
"pages": [
"pages/index/index",
"pages/setting/setting"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
},
"permission": {
"scope.userLocation": {
"desc": "你的位置信息將用于小程序位置接口的效果展示"
}
}
}
到此我們就實現(xiàn)了小程序引導(dǎo)授權(quán)的全部功能,并且可以獲取到用戶的位置經(jīng)緯度了。是不是很簡單。
?
?
本文摘自 :https://blog.51cto.com/u