User Notifications Delayed on Watch

Hi, when sending notifications either via APNS remotely or locally on watchOS, they are delivered with a small but significant delay of ~12 to 20s. That doesn't sound like much, but when e.g. the notification is read on AirPods by Siri via the iOS companion app on the phone it's quite annoying having to wait for the long-look notification UI to appear on the watch to e.g. send a quick reaction.

Interesting: If the watch is not connected to the phone, notifications are delivered as quick as on the iPhone (<1s delay).

That makes me think that this behavior must be related to the notification forwarding feature as described here https://developer.apple.com/documentation/watchos-apps/enabling-and-receiving-notifications .

For a "Dependent watchOS app with an iOS app" it is stated that "You can either send the notification just to iPhone, or send it to both devices. In either case, the system ensures that the user only receives one notification at the best destination." So the watch must somehow coordinate with the iPhone to not show a notification if the "same" (same APNS collapse id?) notification is delivered to the phone as well (?).

Is there a way to disable this behavior?

Thanks! Quirin

First, to explain what is happening here: if you have both a phone and watch app installed, watchOS and iOS try to coordinate between phone and watch notifications. The concept here is that if there is a main app and a companion app, they could both be sending a notification, then the notification would alert on both, which is a deviation from how notification mirroring is handled if there is an iOS app but no watch app. The watch waits for the iOS notification to fire so they can determine if this is the same notification that needs to be deduped, displayed on one device but not the other, or separate notifications to be displayed both.

If the iOS app doesn’t send a notification on the phone, the watch will timeout after some delay and alert anyway. This is the cause of this delay you are observing.

The best solution to this is to send the same notification on both devices simultaneously, and ensuring the notification identifier matches on both notifications. This will let the systems determine how to handle the notification correctly and quickly, and the notification will alert right away.

This solution does not require any Watch Connectivity API. Only if you need to coordinate the local notifications yourself on both devices, then you would use a WCSession to do so.

Thanks for clarifying! I thought I saw a significant delay also when sending two separate notifications with matching identifiers. Will check again.

For now though: Generally, when the iPhone decides to "deliver" a notification by playing it through Siri / text-to-speech on connected AirPods, it does not show on the watch, correct? (At least when relying on the automatic forwarding?) Is there a way to make sure it gets delivered on the watch in this case?

Related: if a notification is delivered on the watch, can we make sure it is also delivered on the phone at the same time (possibly silently), e.g. if there's a user response on the phone app required?

User Notifications Delayed on Watch
 
 
Q