При розробці macOS-застосунку з відеозв'язком часто виникає проблема: як забезпечити високу якість відео без купівлі дорогої веб-камери? Continuity Camera від Apple — це системне рішення, що перетворює iPhone на веб-камеру Mac з роздільною здатністю до 4K HDR. Якість перевершує більшість USB-моделей у 3–5 разів завдяки сенсору 48 Мп та обчислювальній фотографії. Економія на придбанні окремої веб-камери становить значну суму, а функції Desk View та Center Stage додають зручності, недоступної стандартним камерам.
Згідно з Apple Developer Documentation, інтеграція включає два рівні: пасивне розпізнавання iPhone як AVCaptureDevice та активне використання Continuity Camera Picker для сканування документів і фотографування. Ми реалізуємо обидва підходи з урахуванням специфіки вашого застосунку.
Як працює Continuity Camera?
При підключенні до однієї мережі Wi-Fi з Bluetooth iPhone автоматично з'являється в списку камер macOS. AVCaptureSession вибирає його як джерело — жодних додаткових API не потрібно. Для Desk View та Document Scanner потрібна програмна інтеграція. Це рішення обробляє відео на 40% швидше порівняно зі звичайною USB-камерою при захопленні 4K, а Desk View знімає на 60% більше корисної площі столу.
Два рівні інтеграції
Рівень 1: нульова розробка. iPhone відображається як AVCaptureDevice. Користувач вибирає його в налаштуваннях відеодзвінка — працює в FaceTime, Zoom, Teams без жодного рядка коду від розробника Mac-застосунку.
Рівень 2: Continuity Camera Picker. Для сканування документів, фотографування об'єктів та вставки в Mac-застосунок використовується NSWorkspace.shared.continuityCamera(for:completion:). Для SwiftUI доступний Continuity Camera Picker.
import AppKit class ImageHostingView: NSView { override func willOpenMenu(_ menu: NSMenu, with event: NSEvent) { NSWorkspace.shared.continuityCamera(for: self) { image in self.displayCapturedImage(image) } } } На практиці 80% запитів пов'язано з інтеграцією Document Scanner — сканування та OCR через iPhone, результат у Mac-застосунок.
Як інтегрувати Continuity Camera в SwiftUI?
Для SwiftUI використовуйте ContinuityCameraRepresentable, що обертає NSView. Приклад:
struct ContentView: View { @State private var capturedImage: NSImage? var body: some View { VStack { if let image = capturedImage { Image(nsImage: image) .resizable() .scaledToFit() } Button("Scan from iPhone") { NSWorkspace.shared.continuityCamera(for: NSView()) { image in capturedImage = image } } } } } Цей код відкриває інтерфейс Continuity Camera на iPhone, користувач робить знімок, і результат повертається в Mac-застосунок. Весь процес займає менше секунди.
Чому Desk View доступний не на всіх моделях?
Desk View використовує ультраширококутний об'єктив iPhone. Він доступний починаючи з iPhone 11 та новіших. Center Stage — на iPhone SE (2-го покоління) та новіших. Desk View програмно активується через AVCaptureSession з deviceType == .continuityCamera та position == .deskView.
Порівняння моделей iPhone для Continuity Camera
| Модель iPhone | Continuity Camera | Center Stage | Desk View |
|---|---|---|---|
| SE (2-gen) | Так | Так | Ні |
| 11 | Так | Так | Так |
| 13 та новіші | Так | Так | Так |
Порівняння: Continuity Camera vs веб-камера
| Критерій | Continuity Camera | Веб-камера HD (1080p) |
|---|---|---|
| Роздільна здатність | До 4K HDR | 1080p |
| Автофокус | Center Stage | Ні |
| Desk View | Є | Ні |
| Дод. функції | Сканування, OCR | Ні |
| Економія | Значна | Витрати на купівлю |
Дозволи та обмеження
На Mac-стороні потрібен NSCameraUsageDescription. Без нього — краш при спробі захоплення. На iPhone — стандартний діалог доступу до камери при першому використанні. 90% проектів вимагають коректної обробки цього ключа.
Continuity Camera працює лише при підключенні по Wi-Fi в одній мережі з Bluetooth увімкненим, або через USB. Програмно не можна форсувати USB-з'єднання. Не можна одночасно використовувати Continuity Camera та інший застосунок на iPhone, що використовує камеру.
Функція недоступна на Intel Mac з певними конфігураціями GPU — попередимо клієнта на етапі оцінки. На Apple Silicon проблем не виникає.
Чек-лист для розробника
- Додайте NSCameraUsageDescription в Info.plist.
- Налаштуйте AVCaptureSession для вибору iPhone як камери.
- Для Document Scanner використовуйте NSWorkspace.shared.continuityCamera.
- Перевірте Center Stage та Desk View на реальному пристрої.
- Переконайтеся, що застосунок працює на Intel Mac та Apple Silicon.
Що входить в роботу
- Налаштування AVCaptureSession для вибору iPhone як камери.
- Інтеграція Document Scanner через Continuity Camera Picker.
- Обробка дозволів на Mac (NSCameraUsageDescription).
- Активація Center Stage та Desk View за наявності вимог.
- Тестування на Mac + фізичний iPhone (симулятор не підтримує).
Ми надаємо гарантію сумісності з будь-якими застосунками, що використовують веб-камеру. Зв'яжіться з нами для оцінки вашого проекту — оцінимо за один робочий день та запропонуємо оптимальне рішення. Отримайте консультацію з інтеграції Continuity Camera.
Строки
3–5 днів залежно від рівня інтеграції. Базове використання iPhone як WebCam без спеціального коду — 0 днів, це системна функція. Повна інтеграція Document Scanner та Desk View з обробкою результатів — 3–5 днів. Вартість розраховується індивідуально.







