# 权限接口常见问题
# 1. 小程序获取权限需要使用哪些接口?
在小程序的原生页面中,可使用以下接口获取对应权限:
# 1.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
# 1.2 Android端
- 相机权限:二维码扫描接口(
scanCode
)、选择图片接口(chooseImage
)拍照、选择视频接口(chooseVideo
)录像; - 麦克风权限:录音接口(
startRecord
); - 存储权限:选择文件接口(
chooseMessageFile
)、选择图片接口(chooseImage
)从相册选择、选择视频接口(chooseVideo
)从相册选择; - 地理位置权限:获取地理位置接口(
getLocation
)、选择地理位置接口(chooseLocation
);
# 1.3 详细接口文档
# 2. HTML5 页面获取权限需要使用哪些接口?
在小程序的 HTML5 页面中,可使用以下接口获取对应权限:
# 2.1 iOS端
- 相机权限:选择图片接口(
ft.miniProgram.chooseImage
)拍照 - 相册权限:选择图片接口(
ft.miniProgram.chooseImage
)从相册选择
# 2.2 Android端
- 相机权限:选择图片接口(
ft.miniProgram.chooseImage
)拍照 - 存储权限:选择图片接口(
ft.miniProgram.chooseImage
)从相册选择
注:目前权限相关的JSSDK仅支持接口(ft.miniProgram.chooseImage
)
# 2.3 详细接口文档
# 3. 如果获取权限时失败,会返回什么信息?又该如何处理?
对于未获取到权限的情况分以下两种:
首先在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访问您的相机或相册权限”。