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

iOS 26开发者测试版中AVCaptureMetadataOutput的.face检测无回调触发问题

iOS 26开发者测试版中AVCaptureMetadataOutput的.face检测无回调触发问题

我最近在iOS 26开发者测试版上也碰到了完全一样的问题,确实挺闹心的——当把AVCaptureMetadataOutput的metadataObjectTypes设为[.face]时,AVCaptureMetadataOutputObjectsDelegate完全收不到任何回调,但换成.qr这类其他元数据类型就一切正常,而且iOS 26以下的正式版本里,人脸检测的回调都是正常工作的。

结合自己的排查和社区讨论,给你几个可以尝试的方向:

  • 重新确认权限配置:虽然旧版本没问题,但Beta版的权限逻辑可能有调整。先检查Info.plist里是否正确添加了NSCameraUsageDescription,并且确保App已经获取到相机权限。可以在代码里主动检查授权状态:

    switch AVCaptureDevice.authorizationStatus(for: .video) {
    case .authorized:
        // 已授权,继续配置会话
        break
    case .notDetermined:
        AVCaptureDevice.requestAccess(for: .video) { granted in
            // 处理授权结果
        }
    default:
        // 提示用户开启权限
        break
    }
    
  • 检查会话配置流程:Beta版可能对AVCaptureSession的配置顺序要求更严格。确保你是先将AVCaptureMetadataOutput添加到会话,再设置metadataObjectTypes,并且所有会话的配置操作都用beginConfiguration()和commitConfiguration()包裹,避免线程问题:

    captureSession.beginConfiguration()
    if captureSession.canAddOutput(metadataOutput) {
        captureSession.addOutput(metadataOutput)
        metadataOutput.metadataObjectTypes = [.face]
        metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
    }
    captureSession.commitConfiguration()
    
  • 显式设置感兴趣区域:有时候Beta版可能默认的rectOfInterest出现异常,导致无法检测到人脸。可以尝试手动设置感兴趣区域为预览层的完整范围:

    if let previewLayer = self.previewLayer {
        metadataOutput.rectOfInterest = previewLayer.metadataOutputRectConverted(fromLayerRect: previewLayer.bounds)
    }
    
  • 向苹果提交反馈:目前来看这很大概率是iOS 26测试版的系统Bug,建议你通过苹果的Feedback Assistant提交详细的复现项目和设备日志,描述清楚问题场景(比如设备型号、iOS Beta版本号、复现步骤),这能帮助苹果更快定位并修复问题。

另外建议你创建一个最小化的复现项目,排除自己代码中其他逻辑的干扰,确认问题确实是系统层面的。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:03:12