uni-app 苹果14.6 uni.getLocation定位无法使用

uni-app 苹果14.6 uni.getLocation定位无法使用 产品分类:

  • uniapp/H5

PC开发环境操作系统:

  • Windows

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

  • win10

HBuilderX类型:

  • 正式

HBuilderX版本号:

  • 3.1.22

浏览器平台:

  • 微信内置浏览器

浏览器版本:

  • 8.0.9

项目创建方式:

  • HBuilderX

App下载地址或H5网址:

开发环境 版本号 项目创建方式
Windows 10 3.1.22 HBuilderX

示例代码:

uni.getLocation({  
    type: 'gcj02',  
    success(res) {  
        console.log("定位成功: ",res);  
    },  
    fail(err) {  
        console.log("定位失败: ",res);  
    },  
    complete(res) {  
        console.log("定位结束: ",res);  
    }  
})

操作步骤:

uniapp 打包成h5 ios手机微信打开页面调用定位方法即可

预期结果:

正常返回定位结果

实际结果:

没有任何定位信息

bug描述:

uni.getLocation 苹果ios14.6 不能正常调用,无任何返回,苹果ios13 可以正常调用


更多关于uni-app 苹果14.6 uni.getLocation定位无法使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

试试系统浏览器是否正常?

更多关于uni-app 苹果14.6 uni.getLocation定位无法使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html


苹果系统浏览器正常,微信的不行

应该是微信8.0.9更新的问题,同样是8.0.9 苹果有的用户微信可以定位,有的微信就不行,安卓的定位正常

根据你提供的信息,这个问题主要涉及iOS 14.6系统在微信内置浏览器中调用uni.getLocation时无响应。以下是可能的原因和解决方案:

  1. iOS 14+定位权限变更:iOS 14开始,定位权限分为“精确位置”和“大致位置”。你的应用可能只获取了“大致位置”权限,而uni.getLocation需要“精确位置”。建议在调用前检查权限状态,使用uni.authorize申请精确定位权限。

  2. 微信浏览器安全限制:微信内置浏览器对定位接口有额外限制。确保你的H5域名已备案,且在微信公众平台配置了JS接口安全域名。同时,定位功能必须在用户触发的事件(如点击)中调用,直接页面加载调用可能被拦截。

  3. HTTPS要求:H5定位必须使用HTTPS协议,你的网址已是HTTPS,符合要求。

  4. 代码调整建议:在调用uni.getLocation前,先通过uni.getSystemInfo检测系统版本,针对iOS 14+做兼容处理。示例:

    uni.getSystemInfo({
      success(res) {
        if (res.platform === 'ios' && parseFloat(res.system) >= 14.0) {
          // 申请精确定位权限
          uni.authorize({
            scope: 'scope.userLocation',
            success() {
              uni.getLocation({...});
            }
          });
        } else {
          uni.getLocation({...});
        }
      }
    });
回到顶部