По моему опыту, iOS уважает выбор пользователя, поэтому в случае, если пользователь убил приложение, оно останется уничтоженным - никакое тихое push-уведомление не разбудит это приложение. VoIP является исключением из этого, но, как вы писали, его следует использовать только в приложениях VoIP. Это имеет смысл, считая это ограничением платформы: благодаря тому, что пользователь имеет некоторый контроль над тем, что на самом деле работает на телефоне, устройство потребляет меньше заряда батареи и, наконец, приложения переднего плана / системы имеют больше всего процессорного времени.
Существует несколько методов для работы с данными в фоновом режиме:
- Доступное для содержимого push-уведомление: активирует приложение, если оно приостановлено, или запускает его, если оно было убито системой / аварийно завершено. Обратите внимание, что при этом открывается только 30-секундное окно, а количество уведомлений регулируется APNS.
- Возможность фоновой выборки будет действовать аналогичным образом.
- Фоновая задача для завершения существующей задачи, но она используется только при перемещении приложения в фоновый режим.
Если вам требуется приложение для отправки обновлений на сервер, я полагаю, что выше этого будет достаточно (если ваше приложение не шпионит за пользователем, оно должно иметь все соответствующие данные, доступные после завершения взаимодействия пользователя с приложением).
Если вам нужен сервер для отправки данных в приложение, использования тихого push-уведомления (или фоновой выборки для периодического извлечения), или в случае, если эти данные важны для пользователя, вы можете представить ему удаленное уведомление - если пользователь считает важным обновлением он откроет приложение.