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