You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断Android运行时权限弹窗中用户选择的选项?

iOS相机权限选择结果的判断与回调方法

一、通过权限请求回调获取用户选择

iOS中请求相机权限时,AVFoundation框架提供了闭包回调,可以直接在回调中判断用户的选择:

1. 请求权限并处理结果

导入AVFoundation后,调用requestAccess(for:completionHandler:)方法,在回调里解析权限状态:

import AVFoundation

// 请求相机权限
AVCaptureDevice.requestAccess(for: .video) { [weak self] granted in
    // 切回主线程更新UI或处理逻辑
    DispatchQueue.main.async {
        let status = AVCaptureDevice.authorizationStatus(for: .video)
        switch status {
        case .authorized:
            // 对应用户选择「While using the app」
            print("用户允许App使用期间访问相机")
        case .limited:
            // iOS 14+新增,对应用户选择「Only this time」
            print("用户仅允许本次访问相机")
        case .denied, .restricted:
            // 对应用户选择「Don't allow」,或权限被系统限制(如家长控制)
            print("用户拒绝相机权限")
        case .notDetermined:
            // 权限未请求过(此状态不会出现在该回调中)
            break
        @unknown default:
            break
        }
    }
}

2. 各状态对应选项说明

  • authorized:用户选择「While using the app」,App在前台运行时可正常访问相机。
  • limited:仅iOS 14及以上支持,对应用户选择「Only this time」,本次App会话内可访问相机,下次启动需重新请求。
  • denied:用户明确选择「Don't allow」,后续App无法访问相机,需引导用户去设置页修改权限。
  • restricted:权限被系统限制(如设备开启了家长控制),用户无法自主修改权限。

二、主动查询当前权限状态

如果需要在非请求时机(比如App启动时)检查相机权限状态,可直接调用以下方法:

let currentCameraStatus = AVCaptureDevice.authorizationStatus(for: .video)
// 根据currentCameraStatus做对应处理

内容的提问来源于stack exchange,提问作者kc_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:05:01