<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "ImageCaptureCore",
  "identifier" : "/documentation/ImageCaptureCore/ICCameraDeviceDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "ImageCaptureCore"
    ],
    "preciseIdentifier" : "c:objc(pl)ICCameraDeviceDelegate"
  },
  "title" : "ICCameraDeviceDelegate"
}
-->

# ICCameraDeviceDelegate

Methods for detecting cameras, getting metadata and thumbnails, handling access and capability changes, and performing other actions on connected cameras.

```
protocol ICCameraDeviceDelegate : ICDeviceDelegate
```

## Topics

### Determining Device Readiness

[`deviceDidBecomeReady(withCompleteContentCatalog:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/deviceDidBecomeReady(withCompleteContentCatalog:))

Tells the client that the camera device is done enumerating its content and is ready to receive requests.

### Adding Objects

[`cameraDevice(_:didAdd:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didAdd:)-8oukd)

Tells the client when objects are added to the device.

[`cameraDevice(_:didAdd:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didAdd:)-9pnzo)

Tells the client when an object is added to the device.

### Removing Objects

[`cameraDevice(_:didRemove:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didRemove:)-4m5al)

Tells the client when objects are removed from the device.

[`cameraDevice(_:didCompleteDeleteFilesWithError:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didCompleteDeleteFilesWithError:))

Tells the client when the camera completes a delete operation.

[`cameraDevice(_:didRemove:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didRemove:)-9rz34)

Tells the client when an object is removed from the device.

### Renaming Objects

[`cameraDevice(_:didRenameItems:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didRenameItems:))

Tells the client when one or more objects are renamed on the device.

### Receiving Metadata

[`cameraDevice(_:didReceiveMetadata:for:error:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didReceiveMetadata:for:error:))

Tells the client when the metadata requested for an item on a camera is available.

[`cameraDevice(_:shouldGetMetadataOf:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:shouldGetMetadataOf:))

Tells the client when the camera is about to execute queued requests for the metadata of a specific item.

[`cameraDevice(_:didReceiveMetadataFor:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didReceiveMetadataFor:))

Tells the client when the metadata requested for an item on a camera is available.

### Receiving Thumbnails

[`cameraDevice(_:didReceiveThumbnail:for:error:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didReceiveThumbnail:for:error:))

Tells the client when the requested thumbnail is available.

[`cameraDevice(_:didReceiveThumbnailFor:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didReceiveThumbnailFor:))

Tells the client when the requested thumbnail is available.

[`cameraDevice(_:shouldGetThumbnailOf:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:shouldGetThumbnailOf:))

Tells the client when the camera is about to execute queued requests for the thumbnail of a specific item.

### Responding to Capability Changes

[`cameraDeviceDidChangeCapability(_:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDeviceDidChangeCapability(_:))

Tells the client when a capability of a camera changes.

### Responding to Access Restrictions

[`cameraDeviceDidEnableAccessRestriction(_:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDeviceDidEnableAccessRestriction(_:))

Tells the client when an Apple device has been locked, and media is unavailable until the restriction has been removed.

[`cameraDeviceDidRemoveAccessRestriction(_:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDeviceDidRemoveAccessRestriction(_:))

Tells the client when an Apple device has been unlocked, paired to the host, and media is available.

### Responding to PTP Events

[`cameraDevice(_:didReceivePTPEvent:)`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate/cameraDevice(_:didReceivePTPEvent:))

Tells the client about a PTP event.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)