Local Notification on WatchOS 8

We have an App for iPhone + Watch developed with iOS 14 and WatchOS 7 that uses Local Notification on Watch with this function:

  func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

        completionHandler([.banner, .badge, .sound])

    }

All works very well, and I receive Notification in 2/3 seconds

With iOS 15 and WatchOS 8 instead I need to wait 10/15 seconds to receive Notification

Do you have any suggestions?

I try to use only [.badge, .sound] or [.banner, .sound] but the result is always the same

Thank you

  • Same issue. Since watchOS 8 I have not been able to fire local notifications without a long delay even when setting the trigger to nil or some brief time interval like 0.1 to 1 second. Local notifications with timely delivery are critical to app functionality. I hope Apple can address this issue soon or provide a workaround. I'll post a solution if I find one.

  • any progress?

Add a Comment

Replies

This is still happening on watchOS 9.1. There's an old stackoverflow post which reported the issue in watchOS 6.0.1 in October 2019. It has a reply in November 2019 claiming it was fixed in watchOS 6.1: https://stackoverflow.com/questions/58283416/why-are-apple-watchs-local-notifications-delayed

I've been seeing this issue for years and it's incredibly frustrating. What use is a timer app with notifications if the notifications don't appear at the correct time! Notifications created on the phone but delivered to the Watch (because the phone's display is off) appear exactly when they should. But notifications scheduled on the Watch are consistently delivered about 14 seconds too late.

I am implementing userNotificationCenter:willPresentNotification: to cause the notification to be delivered even when my app is in the foreground and I see that method being called at exactly the right time, but no notification appears. It is then called 14 seconds later with a different UNNotification object, which has different UNNotificationRequest and UNNotificationContent objects, but with the same underlying notification identifier. It is then called immediately a third time. I'm unsure whether it is the second or third call which actually shows the notification.

If my Watch app is not running in the foreground then the willPresentNotification delegate method is not called (which is correct - this is only called when in the foreground). The notification is still not shown until 14 seconds later than it was scheduled.

This other post: https://developer.apple.com/forums/thread/696280 mentions that if the Watch app is a standalone app and the companion iPhone app is removed then the Watch notifications are delivered on time. I can confirm this is true!

I still get three calls to the willPresentNotification delegate method for a single notification when the app is running in the foreground, but they all occur within 0.3 seconds of each other and at the correct time. When the app is running in the background, the notification appears at the correct time.

I changed my Watch app to NOT be independent (the iPhone app must be installed) and got delayed notifications again.

So, notifications scheduled on the Watch app will be delayed about 14 seconds if the companion iPhone app is installed.