How can an iPhone app detect real-time connectivity status of a paired Apple Watch?

I'm developing an iOS app that needs to continuously inform a server whether the user's paired Apple Watch is currently reachable for interactive messaging. If this reachability is lost unexpectedly, the server should be alerted within seconds. This is a safety-critical feature where reliability is essential.

The goal (abstractly): The iPhone app needs real-time or near-real-time awareness of whether the paired Apple Watch is reachable. The specific mechanism doesn't matter - I'm open to any approach that achieves this reliably.

Context - what already works:

The iPhone app successfully maintains continuous server connectivity using an NEAppPushProvider network extension. In practice, this runs reliably in the background and sends periodic heartbeats to the server regardless of main app state. This pattern works well for the phone component.

I need to extend this to include the watch's connectivity status in those server updates. Note: WCSession APIs are only available in the main app process, not the Network Extension, so any watch connectivity information must be bridged via the main iOS app (e.g. shared UserDefaults and Darwin notifications).

What I've tried:

1. Companion watchOS app sending heartbeats to iPhone via WCSession

This was my primary approach: a watchOS app sends messages to the iPhone at short intervals using WCSession.sendMessage(). The iPhone forwards this to the server. If heartbeats stop, the server raises an alert. (I tested various intervals from 2-15 seconds; the specific interval doesn't matter because the fundamental problem is that the watch app is suspended regardless.)

Problem: The watch app is suspended almost immediately when:

  • The user presses the Digital Crown
  • The user switches to another app
  • The watch screen dims and shows the clock face (even without explicit backgrounding)

Once suspended, Timer.scheduledTimer() stops firing and no heartbeats are sent.

2. WCSession.isReachable monitoring on iPhone

I hoped the iPhone could monitor WCSession.isReachable to detect when the watch becomes unreachable.

Problem: isReachable indicates whether the counterpart app is reachable for interactive messaging, not the underlying physical connection. It returns false for many reasons - watch app suspended, backgrounded, or various system conditions - making it unreliable as a proxy for actual watch connectivity. The iPhone cannot distinguish "watch app not ready for messaging" from "watch physically disconnected".

3. WKExtendedRuntimeSession on watchOS

Problem: Only available for specific scenarios (workout, mindfulness, etc.). My use case is general activity, not fitness tracking. Misusing workout sessions would likely be rejected by App Review.

4. WKApplicationRefreshBackgroundTask on watchOS

Problem: These tasks are system-scheduled with timing that varies from minutes to hours depending on system conditions. Far too slow and unpredictable for second-level detection.

5. BLE advertising from watchOS app

Problem: BLE advertising stops when the watchOS app is suspended. Same fundamental limitation as the timer approach.

6. Server directly pinging the watch (ICMP or similar)

Problem: While Apple Watch can have an IP address via Wi-Fi or cellular (on LTE models), inbound connections to the watch aren't feasible - the watch is behind NAT with no public address, and watchOS doesn't support inbound server sockets (especially in background). This approach isn't practical regardless of connection type.

7. CoreBluetooth scanning from iPhone

Problem: Apple Watch doesn't advertise as a discoverable BLE peripheral to third-party apps. The system-level pairing isn't exposed.

Why this works on Android/WearOS:

On WearOS, a Foreground Service continues running in the background regardless of UI state or screen status (subject to standard OS background limits, but in practice it works reliably). The service sends heartbeats via MessageClient consistently. This "always-on background execution" pattern has no equivalent on watchOS.

Questions:

  1. Is there any mechanism for an iPhone app to have continuous or regularly-updated knowledge of whether a paired Apple Watch is connected and reachable for interactive messaging - ideally without requiring a watchOS companion app to be in the foreground?

  2. Are there any system-level APIs or entitlements (perhaps requiring special approval) that expose watch pairing/connectivity events to iOS apps?

  3. Is there any watchOS background execution mechanism I've missed that could keep code running reliably when the app isn't in the foreground?

  4. Has anyone solved a similar "detect wearable connectivity loss in real-time" problem on the Apple platform?

I understand Apple designed watchOS with aggressive power management for good reasons. If continuous connectivity monitoring truly isn't possible, I'd appreciate confirmation so I can set appropriate user expectations. But given this is a safety-critical use case, I'm hoping there's an approach I've overlooked.

How can an iPhone app detect real-time connectivity status of a paired Apple Watch?
 
 
Q