Hi there,
I observed situations where a notification won't get delivered to an iPhone that is offline at the moment the notification request is made to the APNs, and gets back online a few hours later.
It does not appear to be a fully repeatable issue, but it does happen much more than sporadically.
I know the storage of notification by APNs is provided as a best-effort service and is not guaranteed, but I do believe there is an issue that maybe is worth looking at.
I controlled for all aspects that could explain the issue:
- APNs return a success code on the request
- the apns-expiration timestamp is not reached when the device gets back online
- apns-priority is set to 10
- target device was in charge while offline
- no other notification were sent for the device
I provided detailed logs in feedback FB15381079
Also sharing a remark on this piece of the APNs documentation: "When you send multiple notifications to the same device for a bundle ID, APNs selects only one notification to store in a non-deterministic way."
It would be very useful to confirm whether silent push notification may lead APNs storage to dismissed an alert notification in favor of the silent push.
Thank you
APNs stores a single notification per topic (in most cases this is the app's Bundle ID) per device regardless of push type.
So, if you are sending silent notifications after an alert notification to the same app while the alert notification is stored for later delivery, the silent notification will replace the previous one in the storage.
Given the fact that silent notifications also have the chance of being dropped after being received on the device without being passed on to your app, it is possible that the subsequent silent notifications could practically be erasing the notification sent prior from existence.
Argun Tekant / DTS Engineer / Core Technologies