react-native-image-picker拒绝相册权限后iOS仍可选图及审核问题
问题复现场景
- 测试环境:iOS 15.5
- 依赖版本:
react-native-image-picker@^4.8.3 - 异常表现:系统弹出照片库权限申请提示、用户选择拒绝授权后,应用仍然可以打开系统照片库选择图片
- 核心调用代码:
import { launchImageLibrary } from "react-native-image-picker"; launchImageLibrary( { mediaType: "photo", quality: 0.6, includeBase64: true }, response => { console.log("Response = ", response); if (response.didCancel) { console.log("User cancelled image picker"); alert("User cancelled image picker"); } else if (response.errorCode) { console.log("ImagePicker ErrorCode: ", response.errorCode); alert("ImagePicker ErrorCode: " + response.errorCode); } else if (response.errorMessage) { console.log("ImagePicker ErrorMessage: ", response.errorMessage); alert("ImagePicker ErrorMessage: " + response.errorMessage); } else { let source = response; const uri = response?.assets && response.assets[0].uri; const base64 = response?.assets && response.assets[0].base64; const fileSize = response?.assets && response.assets[0].fileSize; console.log("uri: ", uri); console.log("base64: ", base64); console.log("fileSize: ", (fileSize / (1024 * 1024)).toFixed(2), "MB"); } } );
现象产生原因
这是iOS系统的官方设计,不是bug也不是权限绕过:
- 从iOS 14版本开始,苹果推出了运行在独立系统进程的
PHPickerViewController选图组件,应用调用这个组件时,不需要申请完整的照片库读写权限,即使用户明确拒绝了应用的所有照片访问申请,依然可以通过这个组件选择图片。 - 用户选图完成后,系统只会把用户选中的单张/多张图片的临时访问权限返回给应用,应用全程无法访问用户照片库内的其他资源,是苹果主推的隐私友好型选图方案。
react-native-image-picker4.x版本在iOS 14及以上系统中,默认就是用PHPickerViewController实现launchImageLibrary方法,所以才会出现拒绝权限后仍能正常选图的表现。
版本过审情况
目前有大量开发者使用react-native-image-picker@4.8.3版本开发的应用正常通过App Store审核,该版本的iOS选图实现完全符合苹果的开发规范,没有违规调用私有API或者绕过权限限制的逻辑。
审核风险说明
这个现象本身不会触发App Store审核驳回,反而是苹果推荐的合规实现:
- 如果你没有额外申请不必要的全量照片库权限、权限描述文案清晰准确,完全不需要担心这部分逻辑卡审核
- 真正会触发驳回的反而是强制要求用户开启全量照片权限才能使用选图功能、权限描述模糊误导用户授权这类行为
- 注意不要在用户拒绝照片权限后弹出“请开启相册权限才能选择图片”这类错误提示,避免因为误导用户被打回
内容的提问来源于stack exchange,提问作者AbhinayMe
相关产品推荐
相关产品推荐

