Реализация Continuity Camera — использование iPhone как веб-камеры Mac
Continuity Camera появилась в macOS Ventura и iOS 16. iPhone используется как камера для Mac: в качестве веб-камеры для видеозвонков, источника для сканирования документов и фотографирования прямо в macOS-приложении. Система делает это автоматически — iPhone появляется как камера в Camera Input выпадающем меню любого приложения. Но чтобы задействовать расширенные возможности (Document Scanner, Look Around, Desk View через ультраширокоугольный объектив), нужна явная интеграция.
Два уровня интеграции
Уровень 1: нулевая разработка. iPhone просто отображается как AVCaptureDevice в списке камер Mac-приложения. AVCaptureSession выбирает его как источник видео — никаких дополнительных API не требуется. Пользователь выбирает iPhone в настройках видеозвонка, и он работает как любая USB/Thunderbolt-камера. Это работает в FaceTime, Zoom, Teams без единой строки кода от разработчика Mac-приложения.
Уровень 2: NSCameraUIkit / Continuity Camera picker. Для сканирования документов, фотографирования объектов и вставки в Mac-приложение — NSWorkspace.shared.open(_:withApplications:configuration:) или стандартные механизмы через NSItemProvider. AppKit предоставляет ContinuityCameraMenu и интеграцию через NSSharingService.
Для SwiftUI на Mac через Continuity Camera Picker:
import AppKit
// Добавление пункта меню Continuity Camera в контекстное меню NSView
// Через NSMenuItem с action continuityCamera:
class ImageHostingView: NSView {
override func willOpenMenu(_ menu: NSMenu, with event: NSEvent) {
NSWorkspace.shared.continuityCamera(for: self) { image in
// image: NSImage, полученное с iPhone
self.displayCapturedImage(image)
}
}
}
На практике большинство запросов связано с интеграцией Document Scanner — сканирование и OCR через iPhone, результат в Mac-приложение.
Разрешения и entitlements
На Mac-стороне нужен NSCameraUsageDescription — даже если физически используется камера iPhone. Система запрашивает разрешение на доступ к "камере", под которой понимает Continuity Camera тоже. Без этого ключа в Info.plist — краш при попытке захвата.
На iPhone разрешения со стороны пользователя — стандартный диалог доступа к камере при первом использовании. Управление — на уровне iOS Settings, не через Mac-приложение.
Desk View и Center Stage
Desk View — режим, при котором ультраширокоугольный объектив iPhone показывает рабочий стол сверху вниз. Доступен программно через AVCaptureSession с указанием нужного AVCaptureDevice с deviceType == .continuityCamera и position == .deskView (если доступно).
Center Stage — автоматическое кадрирование с удержанием лица в центре. Активируется через AVCaptureDevice.isCenterStageEnabled = true. Требует проверки AVCaptureDevice.isCenterStageSupported.
Ограничения
Continuity Camera работает только при подключении по Wi-Fi в одной сети с Bluetooth включённым, или через USB. Программно нельзя форсировать USB-соединение. Нельзя одновременно использовать Continuity Camera и другое приложение на iPhone, использующее камеру.
Функция недоступна на Intel Mac с macOS Ventura при определённых конфигурациях GPU — нюанс, о котором стоит предупредить клиента.
Что входит в работу
- Настройка
AVCaptureSessionдля выбора iPhone как камеры - Интеграция Document Scanner через Continuity Camera Picker
- Обработка разрешений на Mac (
NSCameraUsageDescription) - Center Stage и Desk View (при наличии в требованиях)
- Тестирование на Mac + физический iPhone (симулятор не поддерживает)
Сроки
3–5 дней в зависимости от уровня интеграции. Базовое использование iPhone как WebCam без специального кода — 0 дней, это системная функция. Полная интеграция Document Scanner и Desk View с обработкой результатов — 3–5 дней. Стоимость рассчитывается индивидуально.







