Временная фоновая обработка iOS

Я бы хотел, чтобы мое приложение могло - скажем, каждые 12 часов - даже если оно не запущено в данный момент или находится в фоновом режиме, отправлять HTTP-запрос на сервер, получать небольшой файл с номер версии, и если версия на сервере выше, чем версия на клиенте, загрузите еще несколько файлов на диск, чтобы при следующем запуске приложение обнаружило новый контент на диске.

Какие шаблоны проектирования лучше всего подходят для такой задачи в iOS?

Некоторые приходят мне в голову, но у меня нет такого опыта.

  1. Возможно, push-уведомления, серверу нужно отправить сообщение всем клиентам, когда доступна новая версия.
  2. Или: есть ли что-то похожее на службу Android , которая может помочь?
  3. Или, может быть, каждый раз, когда приложение запускается (или переходит на передний план), просто пингуйте сервер и посмотрите, есть ли что-нибудь новое .
  4. Или каждый раз, когда приложение запускает ping-запрос к серверу, плюс добавляйте таймер на следующие 12 часов на случай, если это приложение все еще будет на переднем плане.
  5. Или каждый раз, когда приложение запускается, проверяйте значение предпочтения, и если последний раз пинговался сервер более 12 часов назад, затем пингуем его сейчас. А затем сэкономьте это время пинга.

Вариант 1 может быть более тяжелым для сервера и более сложным для реализации (рассмотрим ios newbe), но он может быть единственным вариантом для реального фонового обновления. Но даже так,Я все еще не хочу, чтобы пользователю приходилось реагировать на какое-то обновление данных низкого уровня b / wa клиента и сервера (и это то, что это такое), поэтому, если push-уведомления не могут идти напрямую в приложение и выполнять что-то без пользователя вмешательство, тогда этот вариант не работает.
Все варианты 3-5 возможны и звучат не слишком сложно, но они будут работать, только когда приложение находится на переднем плане.

Насколько я знаю, фоновые приложения могут только воспроизводить музыку, получать обновления местоположения или обновления голосовой почты. Есть даже этот хак с тихим звуком, который пытался обойти это ограничение. (и не был одобрен магазином).

Возможно, существующие ограничения имеют уважительную причину, так как же мне играть по правилам и иметь возможность достичь периодического пинга сервера (или, в более общем плане, решить проблему периодического синхронизировать ч / б клиенты и серверы, даже когда приложения находятся в bg)?

Спасибо

12
задан Ran 5 June 2011 в 20:49
поделиться