Implementing Continuity Camera — Using iPhone as a Mac Webcam
Continuity Camera appeared in macOS Ventura and iOS 16. iPhone is used as a camera for Mac: as a webcam for video calls, a source for scanning documents, and photographing directly in a macOS application. The system does this automatically — iPhone appears as a camera in the Camera Input dropdown menu of any application. But to enable advanced capabilities (Document Scanner, Look Around, Desk View through the ultra-wide lens), explicit integration is required.
Two Levels of Integration
Level 1: zero development. iPhone simply appears as an AVCaptureDevice in the list of Mac application cameras. AVCaptureSession selects it as a video source — no additional APIs required. The user selects iPhone in video call settings, and it works like any USB/Thunderbolt camera. This works in FaceTime, Zoom, Teams without a single line of code from the Mac application developer.
Level 2: NSCameraUIkit / Continuity Camera picker. For document scanning, photographing objects, and inserting into Mac applications — NSWorkspace.shared.open(_:withApplications:configuration:) or standard mechanisms via NSItemProvider. AppKit provides ContinuityCameraMenu and integration via NSSharingService.
For SwiftUI on Mac via Continuity Camera Picker:
import AppKit
// Adding Continuity Camera menu item to NSView context menu
// Via NSMenuItem with action continuityCamera:
class ImageHostingView: NSView {
override func willOpenMenu(_ menu: NSMenu, with event: NSEvent) {
NSWorkspace.shared.continuityCamera(for: self) { image in
// image: NSImage, received from iPhone
self.displayCapturedImage(image)
}
}
}
In practice, most requests are related to Document Scanner integration — scanning and OCR through iPhone, result in Mac application.
Permissions and Entitlements
On the Mac side, you need NSCameraUsageDescription — even if physically using iPhone's camera. The system requests permission to access "camera", which also includes Continuity Camera. Without this key in Info.plist — crash when trying to capture.
On iPhone, user permissions are the standard camera access dialog on first use. Management is at the iOS Settings level, not through the Mac application.
Desk View and Center Stage
Desk View is a mode where the iPhone's ultra-wide lens shows the desktop from top to bottom. Available programmatically via AVCaptureSession by specifying the needed AVCaptureDevice with deviceType == .continuityCamera and position == .deskView (if available).
Center Stage is automatic framing that keeps the face in the center. Activated via AVCaptureDevice.isCenterStageEnabled = true. Requires checking AVCaptureDevice.isCenterStageSupported.
Limitations
Continuity Camera works only when connected via Wi-Fi on the same network with Bluetooth enabled, or via USB. You can't programmatically force USB connection. Can't simultaneously use Continuity Camera and another application on iPhone using the camera.
The function is unavailable on Intel Mac with macOS Ventura under certain GPU configurations — a nuance worth warning the client about.
What's Included
- Setting up
AVCaptureSessionto select iPhone as camera - Document Scanner integration via Continuity Camera Picker
- Permission handling on Mac (
NSCameraUsageDescription) - Center Stage and Desk View (if in requirements)
- Testing on Mac + physical iPhone (simulator doesn't support it)
Timeline
3–5 days depending on the level of integration. Basic use of iPhone as WebCam without special code — 0 days, this is a system function. Full Document Scanner integration and Desk View with result processing — 3–5 days. Pricing is calculated individually.







