Я хочу, чтобы мое приложение могло: скажем, каждые 12 часов - даже если приложение не работает в данный момент или находится в фоновом режиме, отправьте HTTP-запрос на сервер, получите небольшой файл с версией номер, и если версия на сервере выше версии на клиенте, затем загрузите еще несколько файлов на диск, чтобы в следующий раз, когда приложение запустится, он найдет новый контент на диске.
Какие шаблоны проектирования лучше всего подходят для такой задачи в ios?
Некоторые приходят мне в голову, но я не так опытен.
- Возможно, push push-уведомления, сервер должен выталкивать сообщение всем клиентам, когда доступна новая версия.
- Или есть ли что-то похожее на Android Service, которое может помочь?
- Или, может быть, каждый раз, когда приложение запускается (или выходит на передний план), просто пинговать сервер и посмотреть, есть ли что-то новое.
- Или каждый раз, когда приложение запускает ping-сервер и добавляет таймер на следующие 12 часов, если это приложение все равно будет на переднем плане.
- Или, каждый раз, когда приложение запускается, проверьте значение предпочтения, и если последний раз, когда сервер пинговал, было больше 12 часов назад, а затем пинговать его сейчас. И затем сохраните это время пинга.
Вариант 1 может быть более тяжелым на сервере и может быть сложнее реализовать (рассмотрим ios newbe), но может быть единственным вариантом для реального обновления фона. Но даже в этом случае я до сих пор не хочу, чтобы пользователь должен был реагировать на некоторые низкоуровневые обновления данных b/wa client и сервера (и то, что это такое), поэтому, если push-уведомления не могут перейти непосредственно к приложению и выполнить что-то без вмешательства пользователя, тогда этот вариант не летает.
Варианты 3-5 возможны и не звучат слишком сильно, но они будут работать только в том случае, если приложение находится на переднем плане.
Из того, что я знаю, фоновые приложения могут только воспроизводить музыку, получать обновления местоположения или обновления voip. Там даже этот хак с тихим звуком, который пытался избежать этого ограничения. (и не был одобрен в магазине).
Возможно, ограничения на месте имеют хорошую причину, поэтому, как я могу играть по правилам и быть в состоянии добиться периодического сервера ping (или, в более общем плане, решить проблему периодических клиентов и серверов с синхронизацией b/w, даже когда приложения находятся в bg)?
Спасибо