uni-app 4.36 项目取消定位权限后打包 首次安装仍会获取定位权限

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

uni-app 4.36 项目取消定位权限后打包 首次安装仍会获取定位权限

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

产品分类:
uniapp/App

PC开发环境操作系统:
Windows

HBuilderX类型:
正式

HBuilderX版本号:
4.36

手机系统:
Android

手机系统版本号:
Android 11

手机厂商:
小米

手机机型:
Redmi K40

页面类型:
vue

vue版本:
vue2

打包方式:
云端

App下载地址或H5网址:
https://cuimian-1300582464.file.myqcloud.com/apk/33009.apk

操作步骤:


3 回复

excludePermissions属性项内容格式不正确,不需要使用两个连续"“字符,正确方式是使用一个”"字符就可以。 另外还应该移除android.permission.ACCESS_BACKGROUND_LOCATION权限。 正确配置方式如下: “excludePermissions” : [
“<uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION”/>”,
“<uses-permission android:name=“android.permission.ACCESS_COARSE_LOCATION”/>”,
“<uses-permission android:name=“android.permission.ACCESS_BACKGROUND_LOCATION”/>”
]


在uni-app 4.36项目中,如果你希望在用户取消定位权限后打包的应用在首次安装时不再自动请求定位权限,可以通过在代码中明确控制权限请求的逻辑来实现。这通常涉及到检查权限状态,并在必要时才请求权限。以下是一个示例代码,展示了如何在uni-app中管理定位权限的请求。

1. 检查并请求定位权限

首先,确保你已经在manifest.json中配置了必要的权限:

"mp-weixin": {
    "requiredPrivateInfos": ["getUserInfo", "getLocation"]
}

2. 在页面或组件中管理权限

下面是一个简单的代码示例,展示了如何在用户首次打开应用时检查定位权限,如果用户已经拒绝过权限请求,则不再请求:

// 假设我们在页面的onLoad生命周期中处理权限请求
onLoad() {
    // 引入uni的权限管理模块
    const permissions = uni.getSetting().authSetting;

    // 检查是否已经授权定位权限
    if (!permissions['scope.userLocation']) {
        // 如果用户之前拒绝过权限请求,这里不再请求权限
        // 可以根据需求显示提示信息给用户
        if (permissions['scope.userLocation'] === false) {
            uni.showToast({
                title: '您已拒绝定位权限',
                icon: 'none'
            });
        } else {
            // 请求定位权限
            uni.authorize({
                scope: 'scope.userLocation',
                success() {
                    // 用户同意授权
                    console.log('用户同意定位权限');
                    // 这里可以调用获取定位信息的函数
                    this.getLocation();
                },
                fail() {
                    // 用户拒绝授权
                    console.log('用户拒绝定位权限');
                    uni.showToast({
                        title: '定位权限获取失败',
                        icon: 'none'
                    });
                }
            });
        }
    } else {
        // 用户已经授权,直接获取定位信息
        this.getLocation();
    }
},

methods: {
    getLocation() {
        uni.getLocation({
            type: 'gcj02', // 返回可以用于wx.openLocation的经纬度
            success: function(res) {
                console.log('当前位置:', res.latitude, res.longitude);
            },
            fail: function() {
                console.log('获取定位信息失败');
            }
        });
    }
}

注意事项

  • 在实际项目中,你可能需要将权限检查的逻辑封装成一个单独的函数,以便在多个地方复用。
  • 确保在请求权限前已经向用户解释了为什么需要这个权限,以增加用户授权的可能性。
  • 对于不同的平台(如微信小程序、H5、App等),定位权限的管理可能会有所不同,确保根据平台特性进行适配。

通过上述代码,你可以有效地控制在用户取消定位权限后,打包的应用在首次安装时不再自动请求定位权限。

回到顶部