Dear All,
I am developing a watchOS app for Apple Watch Ultra that needs to use the Apple depth / water submersion APIs with the entitlement.
The app is configured with the shallow depth and pressure entitlement right now, and I have verified that the entitlement is present both in the signed Watch app and in the embedded provisioning profile.
App configuration:
- Platform: watchOS
- Device: Apple Watch Ultra
- Entitlement used: com.apple.developer.submerged-shallow-depth-and-pressure = true
- Info.plist contains: WKSupportsAutomaticDepthLaunch = true WKBackgroundModes includes underwater-depth
I verified the built Watch app with:
codesign -d --entitlements :- /path/to/WatchApp.app
The output contains:
<key>com.apple.developer.submerged-shallow-depth-and-pressure</key> <true/>
I also verified the embedded provisioning profile with:
security cms -D -i /path/to/WatchApp.app/embedded.mobileprovision
The embedded profile also contains:
<key>com.apple.developer.submerged-shallow-depth-and-pressure</key> <true/>
The built Watch app Info.plist also confirms:
WKSupportsAutomaticDepthLaunch = true WKBackgroundModes includes underwater-depth
At runtime, my diagnostics show:
- Requested source: Automatic or Apple Sensor
- Runtime source: Automatic / Apple Sensor
- Capability resolved by the app: Shallow
- Resolved provider: Apple Sensor — Shallow
- Sample source: Apple Shallow
- CMWaterSubmersionManager.waterSubmersionAvailable: true
- Depth automation: available
- Provider start is called
- First provider event is received
- Submersion state: unknown
- No submersion event is received
- No depth measurement is received
- No temperature sample is received
- Provider state: error
- Raw error: Domain: CMErrorDomain Code: 105 Description: The operation couldn’t be completed.
The relevant runtime failure is:
CMErrorDomain 105
The app also does not appear in:
Apple Watch Settings → General → Auto-Launch → When Submerged
This is the key point that I cannot clarify from the documentation.
My questions are:
-
Is the entitlement
com.apple.developer.submerged-shallow-depth-and-pressure
sufficient for a watchOS app to appear in:
Apple Watch Settings → General → Auto-Launch → When Submerged?
-
Is the shallow depth entitlement sufficient to receive runtime events from CMWaterSubmersionManager, including submersion and depth measurements?
-
Or is the full submerged depth entitlement required for:
- appearing in the “When Submerged” auto-launch list;
- receiving CMWaterSubmersionManager submersion events;
- receiving CMWaterSubmersionManager depth measurements?
-
What does CMErrorDomain code 105 mean in the context of CMWaterSubmersionManager?
-
If the shallow entitlement is sufficient, what other conditions could cause CMWaterSubmersionManager to return CMErrorDomain 105 before delivering any submersion or depth samples?
To summarize:
- The shallow entitlement is present in the source entitlements file.
- The shallow entitlement is present in the signed Watch app.
- The shallow entitlement is present in the embedded provisioning profile.
- The built Info.plist contains WKSupportsAutomaticDepthLaunch = true.
- The built Info.plist contains WKBackgroundModes = underwater-depth.
- CMWaterSubmersionManager.waterSubmersionAvailable returns true.
- The app does not appear in the Watch “When Submerged” list.
- CMWaterSubmersionManager fails with CMErrorDomain 105 before delivering submersion/depth samples.
Any help will be strongly appreciated.
Thank you.