uni-app微信小程序使用startLocationUpdateBackground时注意事项

2022年10月30日 阅读1442次 分类:开发 标签:经验

版权声明:本文为博主原创或转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:http://www.zhuyanjun.cn/development/1926.html

必要配置

首先要确保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需要用户点击才能触发。

(本篇完)

是不是学到了很多?可以

版权声明:本文为博主原创或转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:http://www.zhuyanjun.cn/development/1926.html