必要配置
首先要确保manifest.json文件中配置相关权限
{
// 小程序配置
"mp-weixin" :{
// 这里不设置,息屏后会获取不到位置信息
"requiredBackgroundModes": [
"location"
],
"requiredPrivateInfos" : [
"getLocation",
"onLocationChange",
"startLocationUpdateBackground",
"startLocationUpdate"
],
"permission" : {
"scope.userLocationBackground" : {
"desc" : "用于获取周边点位和记录低碳足迹,请选择“使用时和离开后”"
},
"scope.userLocation" : {
"desc" : "用于获取周边点位和记录低碳足迹,请选择“使用时和离开后”"
}
},
}
}
具体使用
uni.authorize({
scope: 'scope.userLocationBackground',
success() {
// 当前位置信息
const startLocationFun = function (){
uni.onLocationChange(function (res){
console.log(res)
})
}
// 启动背景持续获取定位
uni.startLocationUpdateBackground({
success:startLocationFun,
fail:function (err){
// 启动失败,就启动前台授权
// 小程序bug,首次授权拒绝后,以后进入就再也没有重新授权 startLocationUpdateBackground 的地方了
uni.startLocationUpdate({
success:startLocationFun
})
}
})
},
fail:function (err){
// 拒绝后让手动去授权
}
});
授权上可以搭配uni.getSetting和uni.openSetting使用
uni.getSetting({
success:function (res){
if(res.errMsg === 'getSetting:ok'){
// 已授权
if(!res.authSetting['scope.userLocation']){
}else{
// 未授权
}
}
}
})
注意uni.openSetting需要用户点击才能触发。