Silent Push Notifications doesn't work properly on iOS 14

Does anyone else have troubles with silent push notifications on iOS 14 (latest beta). We use silent PNs for some sort of minimal syncing between devices via backend, and it works well on all iOS versions except iOS 14. I wrote "doesn't work properly" because sometimes they do work, but usually they are not delivered to iOS devices (response code from Apple while sending them is 200, means everything is ok).
Experiencing same problem, silent notifications are not received and if app is put to background and then brought to foreground it starts to work again for a while.

Did you find any solution to it?
@abhishek551  No, right now found literally nothing :/
Same here.

Seems background pushes on iOS 14 are delivered to the app less often than iOS 13.
I mean, we could retrieve some pushes, but also drop some pushes.
In my investigation using iOS 14 beta 6, 7 and 8, the background push payloads themselves were received in iOS 14 device, for sure. I found it by checking the device log using console.app. But seems they are NOT delivered to the app.

And like you folks, I've confirmed the same issue on the public version of iOS 14 (18A373).
It might be the designed, really annoying, change to reduce battery consumptions of the device...
Same issue here. After updating from iOS 13 to 14 I have issues with lost push notifications. I was hoping it was a beta issue but I have the same issues after updating to release version of iOS 14.
I've just received an answer from Apple Developer Technical Support regarding this "lost silent push" issue, which is confirmed on not only iOS 14 betas but also the public version of iOS 14 (18A373).

The summary is as follows.
  • This behavior is expected and is already implemented in the versions before iOS 14.

  • For background push, which is sent as priority 5 (low priority), it has always possibilities to be throttled from the resource efficiency perspective including battery consumptions.

  • That is, background push is never guaranteed to be delivered to the app every single time.

  • This "throttling" schedule method is sometimes fine tuned by updating iOS versions. (like this times...)

  • The possible solution for this issue is to use Notification Service Extension, which can be used only for visible push though.

Hmm, hope this helps...
Thanks for sharing the response from Apple. In my case my app is running in the foreground when I receive these background notifications but still only 2 or 3 arrives then it is blocked for a while. I knew that they weren't guaranteed to arrive in earlier versions of iOS as well but I though that at least if the app is running in the foreground then they should arrive. And they did, all the time in iOS 13. It doesn't save much battery to block a notification for an app that is already running in the foreground.


Are you using application:didReceiveRemoteNotification: method? if so, which is called only when your app is running in the foreground and never guaranteed to be delivered to app. This is not new to iOS 13, or 14 and this method deprecated from iOS 10.

Please use application:didReceiveRemoteNotification:fetchCompletionHandler method instead of deprecated method. If you enable the remote notifications background mode, the system launches your app(or wakes it from the suspended state). If app is suspended, its state changed to UIApplicationStateBackground.

Hello, I experiencing same issue and this is critical for my app (I use silent pushes while in foreground to deliver messages to user)

I just installed iOS 14.2 beta and silent pushes work ok there (bug fixed). So looks like this is iOS 14.0 bug and apple knows about it and fixed already in beta.
Version 14.2 Beta works for me too!
I'm seeing the same thing happen with our foreground notifications that also set content-available, e.g.:

Code Block
{
"aps" : {
"alert" : "Display this message",
"content-available" : 1
}
}


Based on @honishi's reply I'm assuming iOS 14 is treating this as a background update, setting the priority to 5 and throttling delivery.

In my specific case, if I send 10 or so push notifications in ~15 seconds the first ~3 will call application:didReceiveRemoteNotification:fetchCompletionHandler: and then the system will stop calling that method for any push notification for some period of time. For background or foreground pushes. (Although all of my pushes have content-available: 1.)

As a workaround, at least for foreground notifications, in our UNUserNotificationCenterDelegate I implemented userNotificationCenter:willPresentNotification:withCompletionHandler: which gets called for every push when the app is in the foreground and handled the payload in there.

I'm assuming this is a valid solution and not a hack since the docs say:

If you implement this method, you can take whatever actions are necessary to process the notification and update your app.


I tested the beta version 14.2 and it solves this issue. Does the 14.1 solves it as well?
Does not seem to work in IOS 14.1, guess we have to wait for 14.2 then.
I never tried the iOS 14.2 beta, but unfortunately silent pushes are not working for my app on the released version of iOS 14.2. They work fine on my device running iOS 13.7.
Silent Push Notifications doesn't work properly on iOS 14
 
 
Q