We have been experimenting with silent notifications to update the content in our app and connected bluetooth peripheral at regular intervals. We are facing issues every once in a while with some users not receiving the notifications reliably even if the app is in the background and not killed.
Is there a way we can ensure we reliably receive notifications every time without any issues? If there is no guaranteed delivery with silent notifications, then is there any other way that we can explore to achieve our use case?
Silent notifications, meaning notifications with content-available flag that you expect to be delivered to the app are NOT guaranteed to be delivered. It is at the discretion of the system, and while you can expect 1 or 2 notifications to be delivered per hour to the app, it is also possible that you would receive none.
Silent notifications is not a good way to implement this where consistency is required.
If you have to do it via push notifications you will want to use a UNNotificationServiceExtension, which will be executed for every notification, although the notifications will not be silent (although there is a special entitlement you can ask for, your use case is unlikely to be accepted).
But in any case, to communicate with a Bluetooth peripheral, this would not be my recommended method. Best would be if you could have the Bluetooth peripheral to wake up or launch the app periodically, based on its own clock. that would be the best solution. When the app is woken up, you can both communicate with the peripheral, and start a background URL session to update the content.
These are your choices.