位置授权
发布于 6 年前 作者 fhuang 4676 次浏览 来自 问答

小程序用户地理位置授权的时候,授权提示框有时候会弹出来两个,有时候会弹出一个,具体弹出哪一个没有规律,如下图:

我app.js的代码如下:

App({

onLaunch: function (options) {

this.getPromission();

},

onShow: function (options) {

},

onHide: function () {

},

getPromission: function () {

//临时变量

var _this = this;

//根据js_code换取用户的openid并返回用户信息

wx.login({

success: res => {

if (res.code) {

// wx.request({

//   url: _this.globalData.serverUrl + _this.globalData.login,

//   method: ‘GET’,

//   data: {

//     js_code: res.code

//   },

//   header: {

//     ‘Content-Type’: ‘json’

//   },

//   success: function (data) {

//     _this.globalData.userInfo = JSON.parse(data.data)[0]

//     wx.showModal({

//       content: data.data

//     });

//   },

//   error: function (data) {

//     console.log(“error”);

//   }

// })

}

}

})

//获取用户的授权信息

wx.getSetting({

success: res => {

if (!res.authSetting[‘scope.userLocation’]) {

wx.authorize({

scope: ‘scope.userLocation’,

success: res => {

//点击确定授权按钮

},

fail: res => {

var loginStatus = wx.getStorageSync(_this.globalData.loginStatus)

//点击取消授权按钮

if (loginStatus===""||!loginStatus) {

wx.showModal({

title: ‘提示’,

content: ‘为帮助您准确获取周边卡信息,请手动选取位置…’,

success: res => {

if (res.confirm) {

wx.setStorageSync(_this.globalData.loginStatus, true)

wx.navigateTo({

url: ‘…/views/changeCity/changeCity’

})

}else if(res.cancel){

wx.setStorageSync(_this.globalData.loginStatus, false)

}

}

})

}else{

//否则打开授权设置页面进行手动设置

wx.openSetting({

success:res=>{}

})

}

}

})

}

}

})

},

globalData: {

loginStatus: false,//登陆状态

serverUrl: https://xx.xx.com.cn:1234/,//服务器地址

login: ‘login’,//登陆专用

retData: ‘gt’,//返回数据

writeRetData: ‘gdc’,//写入并返回数据

userInfo: {}

}

})

1 回复

关注,目前发现是wx.authorize会弹窗一次,然后在调用对应的接口比如wx.startRecord会在弹窗一次。现在也不知道该怎么解决

回到顶部