小程序获取位置授权的问题
一个项目需要在用户打开小程序后,先进行位置和用户信息的授权检测,只有用户同意两个授权后才能进入小程序内。但是在测试的过程中,发现在获取位置授权时,有些时候位置授权的提示总是不出来,即选择“是”或者“否”的选择页面没有跳出。所以在接下来的授权检测里,就无法再次进行位置授权的操作了。因为openSetting打开时,根本没有位置授权的选项,以下是我的两种写法,均无法完美的解决问题,所以想问wx.getLocation()方法到底是怎么回事。 1. [代码]if[代码] [代码](res.authSetting[[代码][代码]'scope.userInfo'[代码][代码]] && res.authSetting[[代码][代码]'scope.userLocation'[代码][代码]]){[代码][代码] [代码][代码]//已经有了权限,进行登陆,跳转主页[代码][代码] [代码][代码]getApp().getUserInfo();[代码][代码] [代码][代码]wx.switchTab({[代码][代码] [代码][代码]url: [代码][代码]'../index/index'[代码][代码],[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码]else[代码][代码]{[代码][代码] [代码][代码]//获取位置权限[代码][代码] [代码][代码]wx.getLocation({[代码]})[代码] [代码][代码]if[代码] [代码](that.data.flag) {[代码][代码] [代码][代码]wx.showLoading({[代码][代码] [代码][代码]title: [代码][代码]'获取权限中'[代码][代码],[代码][代码] [代码][代码]})[代码][代码] [代码][代码]//自己写的一个线程休眠方法,为了不让用户信息授权先出来[代码][代码] [代码][代码]that.sleep(1000)[代码][代码] [代码][代码]wx.getUserInfo({[代码][代码] [代码][代码]complete: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]//执行后续的权限检查操作[代码][代码] [代码][代码]that.check();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码]}[代码] 2. [代码]if[代码] [代码](res.authSetting[[代码][代码]'scope.userInfo'[代码][代码]] && res.authSetting[[代码][代码]'scope.userLocation'[代码][代码]]){[代码][代码] [代码][代码]//已经有了权限,进行登陆,跳转主页[代码][代码] [代码][代码]getApp().getUserInfo();[代码][代码] [代码][代码]wx.switchTab({[代码][代码] [代码][代码]url: [代码][代码]'../index/index'[代码][代码],[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码]else[代码][代码]{[代码][代码] [代码][代码]if[代码] [代码](that.data.flag) {[代码][代码] [代码][代码]wx.showLoading({[代码][代码] [代码][代码]title: [代码][代码]'获取权限中'[代码][代码],[代码][代码] [代码][代码]})[代码][代码][代码] [代码] [代码][代码]//获取位置权限[代码][代码] [代码][代码]wx.getLocation({[代码] [代码] complete:[代码] [代码][代码]function[代码] [代码](res) [代码]{[代码] //在位置授权回调内调用用户权限 [代码] [代码][代码]wx.getUserInfo({[代码][代码] [代码][代码]complete: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]//执行后续的权限检查操作[代码][代码] [代码][代码]that.check();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] }[代码] [代码] })[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码]}[代码]