# 权限设置常见问题
# 1. 小程序原生页面要获取权限时该使用哪些接口?
# iOS端
- 相机权限:二维码扫描接口(scanCode)、选择图片接口(chooseImage)拍照、选择视频接口(chooseVideo)录像、Camera组件(CameraContext);
- 相册读取权限:选择图片接口(chooseImage)读取相册图片、选择视频接口(chooseVideo)读取相册视频;
- 相册写入权限:保存图片至相册(saveImageToPhotosAlbum)、保存视频至相册(saveVideoToPhotosAlbum);
- 麦克风权限:录音接口(startRecord)、选择视频接口(chooseVideo)录像、Camera组件(CameraContext);
- 地理位置权限:获取地理位置接口(getLocation)、选择地理位置接口(chooseLocation)、使用地图查看位置(openLocation)、打开POI列表选择位置(choosePoi)、Map组件;
- 蓝牙权限:蓝牙-通用、蓝牙-低功耗中心设备、蓝牙-低功耗外围设备、蓝牙-信标等一系列api
- 后台音频播放: BackgroundAudioManager后台播放音频的能力,需要用户自行在target-capabilities处添加background Modes 并勾选 audio,AirPlay,and Picture in Picture
# Android端
- 相机权限:二维码扫描接口(scanCode)、选择图片接口(chooseImage)拍照、选择视频接口(chooseVideo)录像;
- 麦克风权限:录音接口(startRecord);
- 存储权限:选择文件接口(chooseMessageFile)、选择图片接口(chooseImage)从相册选择、选择视频接口(chooseVideo)从相册选择;
- 地理位置权限:获取地理位置接口(getLocation)、选择地理位置接口(chooseLocation);
# 详细接口文档
# 2. 小程序中的H5页面要获取权限时该使用哪些接口?
# iOS端
- 相机权限:选择图片接口(ft.miniProgram.chooseImage)拍照
- 相册权限:选择图片接口(ft.miniProgram.chooseImage)从相册选择
# Android端
- 相机权限:选择图片接口(ft.miniProgram.chooseImage)拍照
- 存储权限:选择图片接口(ft.miniProgram.chooseImage)从相册选择
注:目前权限相关的JSSDK仅支持接口(ft.miniProgram.chooseImage)
# 详细接口文档
# 3. 对于上述接口,小程序或小程序的H5中在获取权限时,如果没有获取到,接口会返回什么信息?小程序和H5页面又该如何处理?
对于未获取到权限的情况分以下两种:
首先在SDK中,是支持将SDK设置为禁止向APP主动获取权限的,设置后SDK会禁止小程序主动调用接口去获取权限。
这种情况下,在小程序中无论是H5页面还是小程序原生页面请求权限时,都会执行调用api时传递的fail回调方法,返回res,在res的errMsg中包含失败的原因(比如chooseImage:fail unauthorized disableauthorized,无相册访问权限);关于如何将禁用SDK权限申请的设置请参考下述文档:
其次,如果是用户未授权的情况,调用api失败后会执行fail回调方法,返回res,在res的errMsg中包含失败的原因(比如chooseImage:fail unauthorized);
对于上述两种获取不到权限的情况,无论是小程序页面或H5页面都需要根据回调返回的失败信息,自行实现提示弹窗,提示用户开启相应的权限,比如在回调中发现没有相机或相册的权限信息为fail时,应在页面增加弹窗提示,如“请在系统中允许APP访问您的相机或相册权限”。