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

能否在Mac Catalyst应用中使用Continuity Camera功能?

在Mac Catalyst应用中支持Continuity Camera的解决方案

目前Mac Catalyst官方文档确实标注AVCaptureDevice.DeviceType.externalUnknown不支持该环境,但有两种可行方式启用Continuity Camera功能:

方法一:利用未公开的兼容调用macOS专属设备类型

在macOS 13及以上版本的Mac Catalyst环境中,实际测试可直接使用.externalUnknown设备类型(即便文档标注不支持)。通过条件编译针对Mac Catalyst环境单独处理:

#if targetEnvironment(macCatalyst)
    if #available(macOS 13.0, *) {
        // 包含内置摄像头和外接未知设备类型,覆盖Continuity Camera
        let targetDeviceTypes: [AVCaptureDevice.DeviceType] = [.builtInWideAngleCamera, .externalUnknown]
        let discoverySession = AVCaptureDevice.DiscoverySession(
            deviceTypes: targetDeviceTypes,
            mediaType: .video,
            position: .unspecified
        )
        // 遍历发现的设备,处理Continuity Camera
        for device in discoverySession.devices {
            if device.isExternalDevice {
                // 识别到iPhone作为外接摄像头
                print("找到Continuity Camera设备:\(device.localizedName)")
            }
        }
    }
#else
    // iOS端原有摄像头逻辑
#endif

注意:该方式依赖系统未公开的兼容行为,未来系统版本更新可能出现兼容性问题,需做好测试和降级处理。

方法二:通过设备特征识别Continuity Camera

若希望依赖更稳定的官方API,可通过设备的外部属性、名称或型号ID识别Continuity Camera设备:

let discoverySession = AVCaptureDevice.DiscoverySession(
    deviceTypes: [.builtInWideAngleCamera],
    mediaType: .video,
    position: .unspecified
)

for device in discoverySession.devices {
    // 判定条件:是外部设备 + 名称包含iPhone(可结合多语言适配调整)
    if device.isExternalDevice && device.localizedName.contains("iPhone") {
        // 确认是Continuity Camera设备,进行后续配置
        configureCaptureSession(with: device)
        break
    }
}

进一步优化可通过device.modelID匹配iPhone的型号标识符(例如iPhone14,2对应iPhone 13 Pro),这种方式不受语言环境影响,准确性更高。

通用注意事项

  • 确保应用已请求相机权限(需在Info.plist中配置NSCameraUsageDescription)。
  • 用户需在Mac系统设置中开启「通用→AirPlay与接力→允许Continuity Camera」权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:17:23