1.iOS和Android的差异
1.1 当用户关闭微信应用级别授权时,iOS仍旧进入success回调,Android进入fail回调,errMsg为startLocationUpdate:fail:system permission denied
1.2 当用户拒绝小程序授权时,iOS和Android均进入fail回调,但是errMsg会有所不同,iOS为:startLocationUpdate:fail auth deny
Android为startLocationUpdate:fail:auth denied
1.3 wx.onLocationChange在Android环境下,开发模式和非开发模式所返回的errMsg不一致
2.所遇到的问题
2.1面对应用级别的授权和小程序的授权,需要进行不同的提示,当关闭微信位置权限时,iOS无法做出判断,如何解决?
2.2是否能提供相关打开手机设置的API,例如支付宝小程序的my.showAuthGuide?
3.代码片段举例
startPosition() {
let that = this
const _locationChangeFn = (result) => {
console.log(result)
wx.offLocationChange(_locationChangeFn)
wx.stopLocationUpdate()
}
return new Promise(resolve => {
wx.startLocationUpdate({
success: res => {
wx.onLocationChange(_locationChangeFn)
that.globalData.isDenyAuthPosi = false
// 此处iOS有问题,当关闭微信应用级授权时
that.globalData.sysPermissionDeny = false
resolve(true)
},
fail: err => {
// 苹果手机:拒绝小程序位置授权 err.errMsg:startLocationUpdate:fail auth deny
// 安卓手机:拒绝小程序位置授权 err.errMsg:startLocationUpdate:fail:auth denied
if (err.errMsg.indexOf('auth den') !== -1) {
that.globalData.isDenyAuthPosi = true
resolve(true)
}
// 苹果手机:拒绝系统位置授权会走success回调!!!
// 安卓手机:拒绝系统位置授权 err.errMsg:startLocationUpdate:fail:system permission denied
if (err.errMsg.indexOf('system permission denied') !== -1) {
that.globalData.sysPermissionDeny = true
resolve(true)
}
}
})
})
}
兄弟好,这个定位问题确实在各种场景下有各种问题, 能否加个微信,相互学习探讨?