uni-app 所有权限都取消了 还是在打开app时弹出权限询问 卡住审核
uni-app 所有权限都取消了 还是在打开app时弹出权限询问 卡住审核
操作步骤:
- 去掉所有权限打包
预期结果:
- 不使用不弹出权限使用框
实际结果:
- 弹出图片和通信的权限使用框
bug描述:
所有权限都取消了 还是在打开app的时候弹出权限询问,这个卡住审核了。。。。。 安装包下载地址 https://www.jjzxapp.com/oos2/jjkj/html/app/UNI2E0C054_0607163616.ipa.zip
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | macOS Monterey 12.2.1 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.4.7 |
手机系统 | Android |
手机系统版本号 | Android 11 |
手机厂商 | 小米 |
手机机型 | MI8SE |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
是云打包么?
回复 小枫叶: 是云打包
回复 3***@qq.com: 我建了一个空包 就是一个空项目 啥都有没有 所有权限都不选 依然有那两个弹窗
应用市场审核不过去,说是不使用不能提前获取用户权限, 给下架了 救命~~~
回复 3***@qq.com: 配置一下隐私弹窗 隐私弹窗之前,他是不会获取 权限的
回复 3***@qq.com: https://ask.dcloud.net.cn/article/36937
回复 小枫叶: 最关键的是即使客户同意了隐私弹窗,在没有实际使用权限之前也不能获取,必须到用的时候才能获取
审核是这么说的:App业务功能所需的权限最好在对应业务功能执行时动态申请,在用户未触发相关业务功能时,不提前申请与当前业务功能无感的权限。
在 uni-app
开发中,即使你在代码中取消了所有权限请求,应用在启动时仍然可能会弹出权限询问对话框,这通常是因为某些系统默认行为或第三方库的自动权限请求所导致的。以下是一些可能的原因和解决方案:
1. 检查 manifest.json
中的权限配置
确保你在 manifest.json
文件中没有声明任何不必要的权限。例如:
{
"permissions": {
"android": [],
"ios": []
}
}
如果你在 manifest.json
中声明了权限,系统可能会在应用启动时自动弹出权限请求。
2. 检查第三方插件的权限
如果你使用了第三方插件或库,这些插件可能会自动请求权限。检查你项目中使用的插件,尤其是那些与设备功能(如相机、地理位置、存储等)相关的插件,确保它们没有在启动时自动请求权限。
你可以通过以下方式排查:
- 查看插件的文档,确认是否有权限请求行为。
- 尝试移除或替换某些插件,看看问题是否依然存在。
3. 检查原生代码
如果你在项目中使用了原生代码(如 Android 的 AndroidManifest.xml
或 iOS 的 Info.plist
),确保这些文件中没有声明不必要的权限。
- Android: 检查
AndroidManifest.xml
文件,确保没有<uses-permission>
标签。 - iOS: 检查
Info.plist
文件,确保没有不必要的权限声明。
4. 检查 uni-app
的默认行为
uni-app
本身可能会在某些情况下自动请求权限,尤其是当你使用了某些特定的 API 或功能时。例如,使用 uni.getLocation
时,uni-app
会自动请求地理位置权限。
你可以通过以下方式避免自动权限请求:
- 在代码中避免使用需要权限的 API,或者在用户明确同意后再调用这些 API。
- 使用
uni.authorize
手动控制权限请求的时机。
5. 使用 uni-app
的权限管理插件
uni-app
提供了 uni.authorize
和 uni.getSetting
等 API 来管理权限请求。你可以使用这些 API 来控制权限请求的时机,避免在应用启动时自动弹出权限请求。
例如:
uni.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {
// 如果用户没有授权地理位置权限,手动请求
uni.authorize({
scope: 'scope.userLocation',
success() {
// 用户同意授权
},
fail() {
// 用户拒绝授权
}
});
}
}
});