Реалізація Continuity Camera — використання iPhone як веб-камери Mac
Continuity Camera з'явилася в macOS Ventura та iOS 16. iPhone використовується як камера для Mac: як веб-камера для відеозвінків, джерело для сканування документів та фотографування безпосередньо в Mac-програмі. Система робить це автоматично — 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 з дією 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 днів. Вартість розраховується індивідуально.







