<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreMotion",
  "identifier" : "/documentation/CoreMotion/CMWaterSubmersionManagerDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Core Motion"
    ],
    "preciseIdentifier" : "c:objc(pl)CMWaterSubmersionManagerDelegate"
  },
  "title" : "CMWaterSubmersionManagerDelegate"
}
-->

# CMWaterSubmersionManagerDelegate

A delegate that receives updates about ambient pressure, water pressure, water temperature, and submersion events.

```
protocol CMWaterSubmersionManagerDelegate : NSObjectProtocol
```

## Overview

The system calls your delegate’s methods to provide updated data to your app. When the watch isn’t submerged, your app receives event, measurement, and error messages. However, the measurement updates include only surface pressure and submersion state data. After submersion, the measurement updates include depth and water pressure data. The watch also begins receiving water temperature updates.

> Note:
> The system calls all the delegate’s methods on an anonymous background queue. Typically, you need to dispatch this data to the main queue or pass it to a <doc://com.apple.documentation/documentation/Swift/MainActor> object before updating the user interface.

The system sends measurement and temperature updates three times a second while the watch is submerged. When the watch is on the surface, the system provides updates at a slower rate, and may stop providing updates if the watch isn’t moving.

## Topics

### Receiving updates

[`func manager(CMWaterSubmersionManager, didUpdate: CMWaterSubmersionEvent)`](/documentation/CoreMotion/CMWaterSubmersionManagerDelegate/manager(_:didUpdate:)-6qux6)

Tells the delegate when a water submersion event occurs.

[`func manager(CMWaterSubmersionManager, didUpdate: CMWaterSubmersionMeasurement)`](/documentation/CoreMotion/CMWaterSubmersionManagerDelegate/manager(_:didUpdate:)-7nhjb)

Provides the delegate with a new set of pressure and depth measurements.

[`func manager(CMWaterSubmersionManager, didUpdate: CMWaterTemperature)`](/documentation/CoreMotion/CMWaterSubmersionManagerDelegate/manager(_:didUpdate:)-18wua)

Provides the delegate with updated water temperature data.

[`func manager(CMWaterSubmersionManager, errorOccurred: any Error)`](/documentation/CoreMotion/CMWaterSubmersionManagerDelegate/manager(_:errorOccurred:))

Tells the delegate when an error occurs.

## Relationships

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

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)