微信小程序沒有授權時(shí)的(de)處理方法
發表時(shí)間:2021-3-31
發布人(rén):融晨科技
浏覽次數:147
背景:微信小程序很多都需要(yào / yāo)用戶的(de)微信授權,可是(shì)很多瓜皮用戶會狠心拒絕,但是(shì)不(bù)管用戶怎麽操作,我們必須讓用戶能夠更好的(de)體驗小程序。
過程:我把用戶的(de)操作分四種。
1)用戶直接同意授權。
2)用戶拒絕授權,進入引導彈窗,用戶繼續拒絕授權。
3)用戶拒絕授權,進入引導彈窗,用戶點擊授權,進入授權設置頁,用戶點擊授權。
4)用戶拒絕授權,進入引導彈窗,用戶點擊授權,進入授權設置頁,用戶不(bù)點擊授權,直接退出(chū)。
解決方法:
toMap() {
let that = this;
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {//如果沒有授權
wx.authorize({
scope: 'scope.userLocation',
success: res => {//第一種情況:用戶同意授權
// 發送地(dì / de)圖
that.toMapFin();
}, fail: res => {//用戶點擊了(le/liǎo)取消授權,引導其去授權
wx.showModal({
title: '提示',
content: '定位需要(yào / yāo)您的(de)微信授權才能使用哦~ 錯過授權頁面的(de)處理方法:删除小程序->重新搜索五百強名片進入->點擊授權按鈕',
cancelText: "不(bù)授權",
confirmText: "授權",
confirmColor: "#a08250",
success: function (res) {
if (res.confirm) {
// 這(zhè)個(gè) API 是(shì)基礎庫 1.1.0 才有的(de),所以(yǐ)需要(yào / yāo)做兼容處理:
if (wx.openSetting) {
wx.openSetting({
success: function (res) {//第三種情況:用戶拒絕授權,進入引導彈窗,用戶點擊授權,進入授權設置頁,用戶點擊授權。
that.toMapFin();
}
})
} else {
wx.showModal({
title: '授權提示',
content: '定位需要(yào / yāo)您的(de)微信授權才能使用哦~ 錯過授權頁面的(de)處理方法:删除小程序->重新搜索五百強名片進入->點擊授權按鈕'
})
}
} else if (res.cancel) {//第二種情況:用戶拒絕授權,進入引導彈窗,用戶繼續拒絕授權。
wx.showModal({
title: '提示',
content: '定位失敗,錯過授權頁面的(de)處理方法:删除小程序->重新搜索五百強名片進入->點擊授權按鈕',
showCancel: false,
confirmColor: "#c00",
success: function (res) {
if (res.confirm) {
console.log('用戶點擊确定')
}
}
})
}
}
})
}
})
} else {//用戶原來(lái)已經通過了(le/liǎo)授權,不(bù)必重新調起授權界面。
that.toMapFin();
}
}
})
},
toMapFin(){
wx.chooseLocation({
success: res => {
console.log(res)
let address = res.address + res.name;
this.setData({
"local.address": [address],
"local.longitude": res.longitude,
"local.latitude": res.latitude
})
},
fail: res => { //第四種情況:用戶拒絕授權,進入引導彈窗,用戶點擊授權,進入授權設置頁,用戶不(bù)點擊授權,直接退出(chū)。
wx.showModal({
title: '提示',
content: '定位失敗',
showCancel: false,
confirmColor: "#c00",
success: function (res) { }
})
}
})
},
這(zhè)樣做的(de)話,每次用戶進來(lái)都會查看他(tā)是(shì)否已經授權,如果不(bù)授權的(de)話,都會調起授權提示。
如果是(shì)用戶點擊拒絕授權之(zhī)後,以(yǐ)後每次進來(lái)都再也(yě)不(bù)調起授權提示的(de)話,這(zhè)個(gè)方法就(jiù)不(bù)适合了(le/liǎo)。
需要(yào / yāo)用到(dào)的(de)方法:
wx:getSetting(獲取用戶的(de)當前設置。)
wx.authorize(提前向用戶發起授權請求。調用後會立刻彈窗詢問用戶是(shì)否同意授權小程序使用某項功能或獲取用戶的(de)某些數據,但不(bù)會實際調用對應接口。如果用戶之(zhī)前已經同意授權,則不(bù)會出(chū)現彈窗,直接返回成功。)
wx.openSetting(調起客戶端小程序設置界面,返回用戶設置的(de)操作結果。)