如何在Xcode IDE中调试Ionic/Cordova iOS应用
Xcode调试iOS相册访问权限问题实操指南
前置配置校验
- 首先确认
Info.plist中已添加对应权限声明,根据你的业务需求选择对应key:- 仅需要写入相册、不需要读取的场景:添加
NSPhotoLibraryAddUsageDescription,value填写用户可见的权限用途说明 - 需要读取相册内容的场景:添加
NSPhotoLibraryUsageDescription,value填写用户可见的权限用途说明
注意:权限描述为空会直接被系统拒绝权限请求,无法弹出授权弹窗
- 仅需要写入相册、不需要读取的场景:添加
- 检查项目
Signing & Capabilities面板无签名或权限配置冲突,绑定的包ID状态正常
核心调试步骤
- 打开Xcode断点导航器,添加符号断点,符号填写
PHPhotoLibrary requestAuthorization:,触发后可直接追踪权限请求的全调用栈,排查是否存在非预期的调用时机 - 在权限请求的回调代码处添加普通断点,打印返回的权限状态枚举值,iOS14+支持的所有权限状态如下:
PHAuthorizationStatusNotDetermined、PHAuthorizationStatusRestricted、PHAuthorizationStatusDenied、PHAuthorizationStatusAuthorized、PHAuthorizationStatusLimited - 遇到授权弹窗无法弹出的问题,先前往系统设置卸载测试App,清理历史权限缓存后重新运行调试
- 调试有限相册访问(Limited Photo Library)场景时,可在Xcode控制台执行命令
po [[PHPhotoLibrary sharedPhotoLibrary] presentLimitedLibraryPickerFromViewController:self]手动唤起相册选择面板,验证权限切换逻辑是否正常
常见异常排查
若已授权但仍然无法读写相册,优先核对你申请的权限等级和操作所需权限是否匹配:仅申请写入权限的App没有读取相册的权限
- 权限状态返回
Restricted:属于设备开启了屏幕使用时间的访问限制,非App逻辑问题,只需给用户弹出对应引导提示即可 - 权限状态返回
Limited:说明用户只给了有限照片访问权限,不要重复触发权限申请弹窗,仅当业务需要的照片不在用户授权范围内时,再引导用户调整授权范围
内容的提问来源于stack exchange,提问作者Dinesh Jadhav
相关产品推荐
相关产品推荐

