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

目录

问题分析

解决方法

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

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

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

完成

其它注意事项

addPermisionInterceptor 添加 uniApi 调用拦截

removePermisionInterceptor 移除 uniApi 调用拦截


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

问题分析

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

 

解决方法

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

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

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

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

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

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

 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 调用拦截

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

removePermisionInterceptor 移除 uniApi 调用拦截

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

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

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

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

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

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

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

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

### 回答1: Uniapp是一个基于Vue.js和小程序技术构建的跨平台开发框架,可以方便地在多个平台上开发移动应用。在Uniapp中,要调用摄像头进行扫码,可以通过uni.scanCode这个API来实现。 首先,在需要扫码的页面上,可以添加一个按钮或者其他触发事件的元素,比如一个图片或者文字链接。然后,在该元素的点击事件中,调用uni.scanCode方法uni.scanCode方法会返回一个Promise对象,可以通过.then方法来处理扫码成功的回调函数。在回调函数中,可以获取到扫码的结果,比如二维码中的内容。 如果扫码成功,可以将扫码结果展示给用户。比如可以将扫码结果显示在页面上的某个元素中,或者跳转到一个新页面来展示扫码结果。 如果扫码失败,也需要给用户一个提示。比如可以弹出一个提示框或者在页面上显示一个错误信息。 在调用uni.scanCode方法之前,还需要在manifest.json文件中配置相机权限,以确保可以正常调用摄像头。在manifest.json文件中的权限配置中,可以添加"camera":true参数来开启相机权限。 总结一下,uniapp调用摄像头进行扫码的步骤是:首先添加一个触发扫码的元素,然后在相应的事件中调用uni.scanCode方法,处理扫码结果的回调函数,最后根据扫码结果展示给用户或者进行错误处理。同,需要在manifest.json中配置相机权限,以确保可以正常调用摄像头。 ### 回答2: UniApp调用摄像头进行扫码功能可以通过uni.scanCode方法来实现。uni.scanCode方法UniApp的内置方法,用于在移动端调用摄像头进行二维码扫描。 首先,我们需要在页面中引入uni-app的API,使用以下代码实现: ``` import uni from '@dcloudio/uni-app'; ``` 然后,我们可以使用uni.scanCode方法来调用摄像头进行扫码。代码示例如下: ``` uni.scanCode({ success: function(res) { console.log(res.result); // 扫码成功后的回调函数,res.result为扫描到的二维码信息 }, fail: function(res) { console.log(res.errMsg); // 扫码失败的回调函数 } }); ``` 在成功回调函数中,我们可以获取到扫描到的二维码信息,可以根据需要进行后续操作,例如解析二维码内容、跳转到对应的页面等。 需要注意的是,使用uni.scanCode调用摄像头扫码功能需要在manifest.json文件中添加对应的权限配置。示例如下: ``` "permissions": { "camera": { "desc": "用于扫码功能" } } ``` 另外,UniApp还提供了更多关于扫码的配置选项,例如设置仅识别特定类型的二维码、自定义扫码界面等。具体的配置可以参考UniApp官方文档。 总结起来,UniApp调用摄像头进行扫码功能可以通过uni.scanCode方法来实现。通过这个方法,我们可以方便地实现二维码扫描功能,并进行后续操作。 ### 回答3: Uniapp是一款用于开发跨平台应用的框架,它允许开发者使用一套代码,在多个平台上进行应用开发。而在Uniapp中,我们可以很方便地调用摄像头来实现扫码功能。 要在Uniapp中调用摄像头进行扫码,首先我们需要使用uni-qrscanner插件。这个插件可以帮助我们在Uniapp中轻松地实现扫码功能。我们需要在项目的manifest.json文件中引入这个插件,然后在需要使用扫码功能的页面中进行调用。 调用摄像头进行扫码的方法很简单,我们只需要使用uni.scanCode方法即可。这个方法可以调用摄像头进行扫码,并返回扫描到的结果。 在调用uni.scanCode方法之前,我们可以先判断一下当前设备是否支持摄像头扫码功能。可以使用uni.getSystemInfo方法获取当前设备的相关信息,然后判断是否支持扫码功能。 在调用uni.scanCode方法后,系统会自动弹出扫码界面,我们可以将摄像头对准需要扫描的二维码或条形码,然后等待扫描的结果。扫描到结果后,uni.scanCode方法会返回一个包含扫描结果的对象,我们可以从中获取到扫描到的信息。 实现uniapp调用摄像头扫码非常简单,只需要引入uni-qrscanner插件并调用uni.scanCode方法即可。这样就可以在Uniapp中实现扫码功能,实现更加丰富、便捷的应用体验。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值