uni-app 开发微信H5使用定位方法不弹出是否允许定位授权导致定位失败

uni-app 开发微信H5使用定位方法不弹出是否允许定位授权导致定位失败

产品分类

  • uniapp/H5

PC开发环境操作系统

  • Windows

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

  • 19045.4170

HBuilderX类型

  • 正式

HBuilderX版本号

  • 4.15

浏览器平台

  • 微信内置浏览器

项目创建方式

  • HBuilderX

App下载地址或H5网址

示例代码

uni.getLocation({
type: "wgs84",
isHighAccuracy: true,
accuracy: "best",
success: function (res) {
console.log("uni.getLocation", res);
//                let mars_point=wgs84_to_gcj02(res.longitude,res.latitude);
// console.log("mars_point",mars_point)
that.longitude = res.longitude.toFixed(6);
that.latitude = res.latitude.toFixed(6);
// that.getLocationInfo('LTB2023090509', '104.042495', '30.620657') //测试用的数据
that.getLocationInfo(
that.curParam.serialNumber,
that.longitude,
that.latitude
); //后端返回详细地址信息
},
fail: function (res) {
console.log("resresfail", res);
},
complete: function (res) {
console.log("complete", res);
},
});

操作步骤

  • 进入下方移动端网站,选择左上角待检测,选择下方列表打卡

预期结果

  • 弹出授权,获取经纬度

实际结果

  • 未弹出是否允许获取定位弹窗,没有拒绝过获取定位

bug描述

  • 微信部分手机使用uni.getLocation 不弹出允许获取定位授权提示,不走fail或者complete,见下方打卡功能里面

Image 1 Image 2


更多关于uni-app 开发微信H5使用定位方法不弹出是否允许定位授权导致定位失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

应该是域名问题

更多关于uni-app 开发微信H5使用定位方法不弹出是否允许定位授权导致定位失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


域名问题为啥有些ios在微信就可以,有些ios就不行啊,同一个东西部分手机

回复 5***@qq.com: ios 苹果真机运行是可以的,我以为你做的是h5

回复 5***@qq.com: 我觉得你应该在mainifest权限配置错了;这个我写的定位适合app端你可以看看,希望可以帮到你;https://ext.dcloud.net.cn/plugin?id=18122

在使用 uni-app 开发微信 H5 时,如果遇到定位方法不弹出是否允许定位授权导致定位失败的问题,可能是由于以下几个原因导致的。以下是一些可能的解决方案:

1. 检查微信授权设置

  • 确保微信浏览器已经开启了定位权限。微信 H5 页面获取定位需要用户在微信中授权定位权限。
  • 用户可以在微信中手动开启定位权限:进入微信 -> 我 -> 设置 -> 隐私 -> 位置信息 -> 开启“位置信息”权限。

2. 检查代码实现

  • 确保你在代码中正确使用了 uni.getLocation 方法。以下是一个简单的示例:

    uni.getLocation({
      type: 'wgs84',
      success: function (res) {
        console.log('经度:' + res.longitude);
        console.log('纬度:' + res.latitude);
      },
      fail: function (err) {
        console.log('获取位置失败:', err);
      }
    });
    
  • 如果你使用的是 wx.getLocation,确保你在 manifest.json 中正确配置了微信 JSSDK 的权限:

    "mp-weixin": {
      "appid": "your-appid",
      "permission": {
        "scope.userLocation": {
          "desc": "你的位置信息将用于小程序位置接口的效果展示"
        }
      }
    }
    

3. 检查微信 JSSDK 配置

  • 如果你使用的是微信 JSSDK,确保你已经正确引入了 JSSDK 并进行了配置。以下是一个简单的配置示例:

    wx.config({
      debug: false, // 开启调试模式
      appId: 'your-appid', // 必填,公众号的唯一标识
      timestamp: 'your-timestamp', // 必填,生成签名的时间戳
      nonceStr: 'your-nonceStr', // 必填,生成签名的随机串
      signature: 'your-signature', // 必填,签名
      jsApiList: ['getLocation'] // 必填,需要使用的JS接口列表
    });
    
  • 确保你在调用 wx.getLocation 之前已经成功调用了 wx.ready

    wx.ready(function () {
      wx.getLocation({
        type: 'wgs84',
        success: function (res) {
          console.log('经度:' + res.longitude);
          console.log('纬度:' + res.latitude);
        },
        fail: function (err) {
          console.log('获取位置失败:', err);
        }
      });
    });
    

4. 检查微信版本

  • 确保用户使用的微信版本支持定位功能。较老的微信版本可能不支持某些定位功能。

5. 检查网络环境

  • 确保用户处于良好的网络环境中,网络不稳定可能导致定位失败。

6. 调试与日志

  • 在开发过程中,可以使用微信开发者工具进行调试,查看是否有错误信息输出。
  • 使用 console.loguni.showModal 输出调试信息,帮助定位问题。

7. 用户授权问题

  • 如果用户曾经拒绝过定位权限,微信可能不会再次弹出授权提示。此时,用户需要手动在微信设置中开启定位权限。

8. 使用 uni.authorize 请求授权

  • 你可以使用 uni.authorize 方法主动请求用户授权定位权限:

    uni.authorize({
      scope: 'scope.userLocation',
      success() {
        // 用户已经同意授权
        uni.getLocation({
          type: 'wgs84',
          success: function (res) {
            console.log('经度:' + res.longitude);
            console.log('纬度:' + res.latitude);
          },
          fail: function (err) {
            console.log('获取位置失败:', err);
          }
        });
      },
      fail() {
        // 用户拒绝授权
        console.log('用户拒绝授权');
      }
    });
回到顶部