Вы правильно сказали, что Push-уведомления ненадежны.
С одной стороны, если устройство не подключено к Интернету, APN сохранит только одно push-уведомление, которое будет отправлено при повторном подключении устройства (последнее уведомление, отправленное поставщиком). Поскольку невозможно определить, отправлено ли уже уведомление или нет после того, как ваши серверы отправили его в APNS, вы даже не можете попытаться поставить в очередь уведомления с вашей стороны.
Кроме того, если ваше приложение зависит от PN, пользователь может легко отключить его функциональность, отключив уведомления.
Так что вы абсолютно правы: если данные, которые вы хотите отправить, являются критическими, то вам не следует использовать Push Notification. Но я верю, что на самом деле нет решения вашей проблемы. вы просто не можете положиться на них, чтобы ваше приложение работало.
Я думаю, что наилучшим подходом было бы, например, приложение для работы с электронной почтой, где вы можете загружать свои электронные письма, когда вы запускаете приложение, когда включен или не включен PN, а PN просто уведомляет вас о новой электронной почте, даже если не гарантировано, что вы его получите вообще.