uni-app 企业微信ios手机端 禁止企微APP获取位置信息后 uni.getLocation无反应?

发布于 1周前 作者 vueper 来自 Uni-App

uni-app 企业微信ios手机端 禁止企微APP获取位置信息后 uni.getLocation无反应?

信息类别 详细信息
产品分类 uni小程序SDK
手机系统 iOS
手机系统版本号 iOS 15
手机厂商 苹果
手机机型 11 12 14
页面类型 vue
SDK版本号 3.0.0-3080720230703001

操作步骤:

企业微信ios手机端 ,在设置里禁止企微APP获取系统位置信息后, 调用 uni.getLocation API , success fail complete 三个回调都不会走

预期结果:

调用uni.getLocation API 后 走fail 回调 报 getLocation:fali system permission denied

实际结果:

无反应

bug描述:

企业微信ios手机端 ,在设置里禁止企微APP获取系统位置信息后, 调用 uni.getLocation API , success fail complete 三个回调都不会走
安卓没问题


2 回复

分类选错了是微信小程序


在处理 uni-app 开发中企业微信 iOS 手机端禁止位置信息获取后 uni.getLocation 无反应的问题时,通常我们需要考虑几个关键点:权限请求、错误处理以及兼容性问题。以下是一个简化的代码示例,展示了如何在 uni-app 中处理位置权限请求及错误处理。

首先,确保在 manifest.json 中配置了企业微信的相关信息,并且已经在企业微信后台开启了位置权限的申请。

// manifest.json 中的 mp-weixin 配置示例
"mp-weixin": {
    "appid": "your-app-id",
    "setting": {
        "urlCheck": false
    },
    "usingComponents": true
}

然后,在你的页面中实现位置获取逻辑,注意添加错误处理:

Page({
    data: {
        latitude: 0,
        longitude: 0,
        errorMessage: ''
    },
    onLoad() {
        this.getLocation();
    },
    getLocation() {
        uni.authorize({
            scope: 'scope.userLocation',
            success() {
                uni.getLocation({
                    type: 'gcj02', // 微信小程序使用 gcj02 坐标系
                    success(res) {
                        console.log('位置信息:', res);
                        this.setData({
                            latitude: res.latitude,
                            longitude: res.longitude,
                            errorMessage: ''
                        });
                    },
                    fail(err) {
                        console.error('获取位置失败:', err);
                        this.setData({
                            errorMessage: '获取位置失败,请检查权限设置'
                        });
                    }
                });
            },
            fail() {
                console.warn('用户拒绝授权位置信息');
                this.setData({
                    errorMessage: '您已拒绝授权位置信息'
                });
            }
        }.bind(this)); // 注意这里的 bind(this),确保回调中的 this 指向正确
    }
});

在上述代码中,我们使用了 uni.authorize 来请求用户的地理位置权限。如果用户已经授权,则调用 uni.getLocation 获取位置信息。如果用户拒绝授权或未授权,我们会在页面上显示相应的错误信息。

此外,对于企业微信 iOS 端特有的问题,有时可能需要检查企业微信的权限设置页面,确保位置权限没有被系统级禁用。此外,也可以考虑在企业微信的管理后台中查看是否有相关的权限配置或日志,以帮助诊断问题。

请注意,由于不同版本的 uni-app 和企业微信可能存在差异,上述代码可能需要根据实际情况进行调整。确保你的开发环境、uni-app 版本以及企业微信 SDK 版本都是最新的,以减少兼容性问题。

回到顶部