应用商店双弹窗“APP在向用户申请权限时未同步告知用户申请此权限的理由”驳回uni-app应用上线的解决方法

目录

问题分析

解决方法

下载插件包:x-perm-apply-instr

将插件包导入进你项目中的uni_modules文件夹

在项目中的main.js文件中添加以下代码

完成

其它注意事项

[addPermisionInterceptor 添加 uniApi 调用拦截](#addPermisionInterceptor 添加 uniApi 调用拦截)

[removePermisionInterceptor 移除 uniApi 调用拦截](#removePermisionInterceptor 移除 uniApi 调用拦截)


在uniapp上线应用商店时,遇到了一个被驳回的问题,上面显示的是:APP在向用户申请权限时未同步告知用户申请此权限的理由。下面记录一下我解决的方法。

问题分析

应用商店驳回的理由,其实说白了就是你应用获取权限的时候需要再加一个弹窗,用来同步提示用户获取权限的目的,如下图所示:

解决方法

根据客服说的双弹窗形式的整改方式,我们可以使用插件进行优化

下载插件包:x-perm-apply-instr

下载文章顶部的插件压缩包,并完成解压。

将插件包导入进你项目中的uni_modules文件夹

导入uni_modules规范插件需要使用 3.1.0 以上版本的 HBuilderX

在项目中的main.js文件中添加以下代码

javascript 复制代码
 import { addPermisionInterceptor, removePermisionInterceptor } from '@/uni_modules/x-perm-apply-instr/js_sdk/index.js'

addPermisionInterceptor('chooseImage', '为了修改个人头像和发布信息图片视频等, 我们需要申请您设备的相机和存储权限')

addPermisionInterceptor('chooseVideo', '为了发布信息图片视频等, 我们需要申请您设备的相机和存储权限')

addPermisionInterceptor('saveImageToPhotosAlbum', '为了保存推广海报到手机相册, 我们需要申请您设备的存储权限')

addPermisionInterceptor('getLocation', '为了根据您的位置展示信息, 我们需要申请您设备的位置权限')

addPermisionInterceptor('makePhoneCall', '为了联系客服/用户/咨询等, 我们需要申请您设备的拨打电话权限')

addPermisionInterceptor('getRecorderManager', '为了使用语言消息功能等, 我们需要申请您设备的麦克风权限')

addPermisionInterceptor('startLocationUpdate', '为了根据您的位置展示信息, 我们需要申请您设备的位置权限')

addPermisionInterceptor('scanCode', '为了识别二维码信息, 我们需要申请您设备的相机权限')

完成

至此,你的项目已经解决了这个问题,你可以在Hbuilder中使用真机测试,或者使用打包下载测试的方法进行测试

其它注意事项

addPermisionInterceptor 添加 uniApi 调用拦截

|--------|---------|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
| 位置 | 类型 | 描述 | 可选值 |
| 0 | String | 要拦截的 uniApi 名称 | scanCode、chooseImage、chooseVideo、saveImageToPhotosAlbum、saveVideoToPhotosAlbum、getLocation、startLocationUpdate、makePhoneCall、getRecorderManager |
| 1 | String | 申请权限说明信息 | 自定义文本 |
| 2 | Boolean | 只询问一次, 用户不同意申请或拒绝权限将无法使用 uniApi, 如果要继续使用 Api 先用 removePermisionInterceptor 函数移除拦截再调用 Api | true, false |

removePermisionInterceptor 移除 uniApi 调用拦截

|----|--------|------------------|-----|
| 位置 | 类型 | 描述 | 可选值 |
| 0 | String | 要移除拦截的 uniApi 名称 | 同上 |

注意 , 如果需要拦截 getRecorderManager , 在使用时不要直接在 script 下初始化 , 会导致拦截失败 , 请在 onLoad onReady 中调用

javascript 复制代码
<script>
    // 错误写法
    const recorderManager = uni.getRecorderManager();
    // 正确写法
    let recorderManager = null
    export default {
        onLoad() {
            recorderManager = uni.getRecorderManager();
        }
    }
</script>

手动控制权限说明弹窗(在不能触发拦截的情况下使用)

javascript 复制代码
import { popup } from '@/uni_modules/x-perm-apply-instr/js_sdk/native_popup.js'
// 显示
popup.show({
    title: '权限申请说明',
    content: '为了xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
})
// 关闭
popup.close()

如果您想了解更多,请您进入DCLOUD插件官网进行浏览:DCloud 插件市场

注,本文插件地址来源于:权限申请说明、权限申请的使用目的、华为上架、小米上架(无需改动代码、全局拦截) - DCloud 插件市场

如果文章对您有帮助,还请您点赞支持
感谢您的阅读,欢迎您在评论区留言指正分享

相关推荐
2501_916008895 分钟前
手机 iOS 系统全解析,生态优势、开发机制与跨平台应用上架实践指南
android·ios·智能手机·小程序·uni-app·iphone·webview
MobotStone30 分钟前
AI落地不靠吹,靠这6条反直觉经验帮你赚钱
产品经理·产品·设计师
小小爱大王41 分钟前
AI 编码效率提升 10 倍的秘密:Prompt 工程 + 工具链集成实战
java·javascript·人工智能
半生过往42 分钟前
2025 前端动效实战指南:Vue Bits & React Bits 深度拆解(功能 / 复用 / 高频问题处理)
前端·vue.js·react.js
程序员包打听44 分钟前
Vitest 4.0 重磅发布:Browser Mode 正式稳定,前端测试进入新纪元
前端
BumBle1 小时前
UniApp 多页面编译优化:编译时间从10分钟到1分钟
前端
星链引擎1 小时前
大语言模型的技术突破与稳定 API 生态的构建
前端
还是大剑师兰特1 小时前
TypeScript 面试题及详细答案 100题 (71-80)-- 模块与命名空间
前端·javascript·typescript
BumBle1 小时前
使用 SortableJS 实现vue3 + Element Plus 表格拖拽排序
前端·vue.js·element
玉宇夕落1 小时前
HTML5 音乐敲击乐静态界面
前端