1.位置授權(quán)
位置授權(quán)相對簡單,可以直接調(diào)用方法wx.getLocation()就可以彈出授權(quán)框,
在調(diào)用前需要在app.json中設(shè)置用途說明
Page({"permission": { "scope.userLocation": { "desc": "你的位置信息將用于xxx" } }})授權(quán)框

但是存在不少用戶會拒絕授權(quán),如果拒絕授權(quán)就不會再彈窗,而是直接進(jìn)入接口 fail 回調(diào),就要手動授權(quán),我們可以通過自定義彈窗來誘導(dǎo)用戶授權(quán)。我這里用的是wx.showMoadl確認(rèn)框。
確認(rèn)框

如果確認(rèn)就調(diào)用wx.opensetting調(diào)出授權(quán)設(shè)置頁面
wx.showModal({ title: '提醒', content: '您拒絕了位置授權(quán),將無法使用大部分功能,點擊確定重新獲取授權(quán)', success(res) { //如果點擊確定 if (res.confirm) { wx.openSetting({ //打開設(shè)置頁 success(res) { //成功,返回頁面回調(diào) //如果同意了位置授權(quán)則userLocation=true if (res.authSetting["scope.userLocation"]) { //授權(quán)中如果有位置授權(quán)則執(zhí)行邏輯 /*你的代碼*/ } } }) } } })授權(quán)設(shè)置頁

完整代碼
wx.getLocation({ success: function(res) { app.globalData.lat = res.latitude; app.globalData.lon = res.longitude; }, fail() { wx.showModal({ title: '提醒', content: '您拒絕了位置授權(quán),將無法使用大部分功能,點擊確定重新獲取授權(quán)', success(res) { //如果點擊確定 if (res.confirm) { wx.openSetting({ success(res) { //如果同意了位置授權(quán)則userLocation=true if (res.authSetting["scope.userLocation"]) { that.onLoad() } } }) } } }) } })2.用戶信息授權(quán)
用戶授權(quán)步驟相對會復(fù)雜一點,因為現(xiàn)在獲取wx.getUserInfo 接口后續(xù)將不再出現(xiàn)授權(quán)彈窗。需要手動點擊去授權(quán),所以也是需要誘導(dǎo)用戶去點擊按鈕。
<button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">確認(rèn)</button>
open-type 我用到了兩種
getUserInfo 獲取用戶信息,可以從bindgetuserinfo回調(diào)中獲取到用戶信息 getPhoneNumber 獲取用戶手機號,可以從bindgetphonenumber回調(diào)中獲取到用戶信息(下面有)注意:這里必須是button組件才能觸發(fā)
這里我將他封裝成了一個模擬的彈出框(樣式丑陋,自己修改),wxss就不發(fā)出來了
模擬彈出框

<!-- wxml --><view class='getInfo' wx:if="{{haveInfo}}"> <view class='content'> <view class='text'>我們需要獲取您的授權(quán)信息</view> <view class='btn_block'> <button class='btn1' bindtap='no'>拒絕</button> <button class='btn2' open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">確認(rèn)</button> </view> </view></view>
新聞熱點
疑難解答