问题: 由于检测用户状态需要一定的时间。在检测完之前不能进行后续操作
通杀版本只需要在调用时传入相应授权码即可实现小程序授权通杀
解决: 使用回调函数处理
界面:https://blog.csdn.net/aaron9185/article/details/84101455
代码实现
一、在app.js中插入检测授权状态方法 在回调时返回
//判断是否授权 传入授权名称 授权代码 和回掉函数
isAuth: function(stateName, stateKey, callback) {
var that = this
wx.getSetting({
success(res) {
// console.log(stateName)
// console.log(stateKey)
// console.log(res)
if (!res.authSetting[stateKey]) {
// console.log('我是授权未成功')
callback('授权失败', stateName, stateKey)
} else {
// console.log("我是已经授权成功")
callback('授权成功', stateName, stateKey)
}
}
})
},
二、授权页面 在授权页面 调用app.js检测时间 并传入回调函数 回调函数中授权成功失败分别执行不同操作
//获取地理位置
app.isAuth("地理位置", "scope.userLocation", function(err, name, key) {
if (err == '授权成功') {
console.log(name + '授权成功')
//经纬度
wx.getLocation({
type: 'wgs84',
success: function(res) {
console.log(res)
var latitude = res.latitude
var longitude = res.longitude
that.setData({
wd: latitude, //维度
jd: longitude, //精度
})
if (that.data.time == 0) {
//加载图片
that.loadImages()
that.setData({
time: 1
})
}
}
})
} else {
console.log(name + '授权失败')
var tempData = name + 'and' + key
wx.navigateTo({
url: '../system/authorize/authorize?tempData=' + tempData
})
}
})