1***@qq.com
1***@qq.com
  • 发布:2024-03-27 15:19
  • 更新:2024-03-30 17:16
  • 阅读:213

getLocation安卓端无法实时获取用户位置信息

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.99

手机系统: Android

手机系统版本号: Android 14

手机厂商: 华为

手机机型: 红米note13pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

function startForegroundLocation() {
const getLocationInterval = setInterval(() => {
uni.getLocation({
type: 'gcj02',
geocode: true,
success: function(res) {
uni.setStorageSync('foregroundLocation', res)
console.log('当前位置信息:', res);
},
fail: function(error) {
console.error('获取位置信息失败:', error);
}
});
}, 5000); // 每隔5秒更新一次位置信息
ldata.bgStatus = 1;
ldata.getLocationInterval = getLocationInterval;
}

操作步骤:

/**

  • 开始后台定位
    */
    function startBGLocation() {
    console.log("startBGLocation");
    if (ldata.bgStatus == 1) {
    return;
    }
    // 当前位置信息
    const startLocationFun = function() {
    uni.onLocationChange(function(res) {
    //开启成功
    ldata.bgStatus = 1;
    })
    }
    // #ifdef MP-WEIXIN
    uni.startLocationUpdateBackground({
    type: 'gcj02',
    success: startLocationFun,
    fail: (error) => {
    //开启失败
    _startBGLocationError(error);
    }
    })
    // #endif

    // #ifdef APP-PLUS
    startForegroundLocation();
    // #endif
    uni.onLocationChangeError((error) => {
    _onLocationChangeError(error);
    })
    }
    /**

  • 安卓App开启前台定位
    */
    function startForegroundLocation() {
    const getLocationInterval = setInterval(() => {
    uni.getLocation({
    type: 'gcj02',
    geocode: true,
    success: function(res) {
    uni.setStorageSync('foregroundLocation', res)
    console.log('当前位置信息:', res);
    },
    fail: function(error) {
    console.error('获取位置信息失败:', error);
    }
    });
    }, 5000); // 每隔5秒更新一次位置信息
    ldata.bgStatus = 1;
    ldata.getLocationInterval = getLocationInterval;
    }

预期结果:

实时获取用户位置信息,挂后台和息屏操作都要。

实际结果:

只有在app内才会实时获取用户位置信息

bug描述:

uniapp中安卓端。通过uni.getLocation获取用户位置信息,定时器轮询的方式实时获取位置信息,真机模拟的时候可以查询,但是一旦真机模拟,按home建,回到主页面后,就无法获取位置信息了。

2024-03-27 15:19 负责人:无 分享
已邀请:
套马杆的套子

套马杆的套子 - 没有解决不了的问题,只有解决不完的问题

你这是不是后台进程被杀了啊?
你这个是要做什么,需要循环定位呢?这,不太建议这么搞吧

  • 1***@qq.com (作者)

    暂时先用循环来实时获取用户位置信息,怎么知道安卓端应用挂后台后进程被杀了。其实功能类似就是keep跑步软件一样。挂后台和息屏手机都要实时获取用户位置信息

    2024-03-29 15:46

困难总比办法多

困难总比办法多

iOS可以配置后台运行能力。参考文档:https://uniapp.dcloud.net.cn/tutorial/app-ios-uibackgroundmodes.html# ,android除非你在手机厂商的白名单里,能长期后台运行,如微信 qq这些,否则会被通杀。可能在个别机型上能活一段时间,但要所有机型很难。 不要和滴滴、美团比,这些原生应用保活手段更多。

要回复问题请先登录注册