У меня нет однозначного ответа на ваш вопрос, просто беспорядочный набор комментариев, которые могут помочь вам решить, что лучше всего подойдет для вашей ситуации.Извините, это лучшее, что я могу предложить.
Следует иметь в виду, что приложение не должно использовать квоту на тарифный план телефона, не сообщая пользователю, что оно что-то загружает.Некоторые приложения предназначены только для загрузки материалов, таких как клиенты Twitter, поэтому природа приложения говорит пользователю, что приложение использует тарифный план.Другие приложения, такие как программа для рисования, не требуют явной загрузки, поэтому должны уведомлять пользователя о необходимости загрузки.
Поскольку Apple не позволяет разработчикам загружать данные в фоновом режиме, люди, использующие iOS, обучены ждать, пока их приложения загрузят обновленные данные.Типичный способ улучшить взаимодействие с пользователем во время ожидания загрузки - как минимум показать спиннер, чтобы пользователь знал, что приложение работает.Чтобы еще больше улучшить интерфейс, отправьте загрузку в другой поток и разрешите пользователям продолжать использовать оставшуюся часть приложения.Они могут взаимодействовать со старыми данными или использовать части приложения, которые не нуждаются в обновлении.
Apple не предоставляет программистам механизм для загрузки нового контента в фоновом режиме для большинства типов приложений.Согласно заявлениям Apple, функция Newsstand в iOS 5 позволит обновлять подписки в фоновом режиме.Возможно, в будущем у нас, разработчиков, будет больше возможностей для фоновой загрузки.
У меня есть одно приложение в магазине приложений, которое использует метод 5, и другое в работах, которое использует метод 3.
Iиспользовать push-уведомления (метод 1), если люди хотят как можно скорее узнать, что новые данные доступны.Это зависит от темы.
В iOS нет ничего похожего на службу Android (метод 2)
У меня есть приложение, которое проверяет RSS-канал на наличие новостей при каждом запуске приложения (метод 3).Это приложение в основном делает другие вещи, но показывает канал в стартовом представлении.Поскольку приложение представляет собой простую утилиту, которая помогает людям найти конкретное решение, канал RSS является вспомогательным.
Мне нравится идея таймера в методе 4. Если вы хотите дать человеку возможность одобрить загрузку,таймер может вызвать предупреждение, а затем ждать.Таким образом, приложение на самом деле не загружает что-либо, если устройство было оставлено с приложением на переднем плане.
Моя реализация метода 5 в моем доступном в настоящее время приложении имеет небольшие различия.Он загружает данные только для одного из многих просмотров.Каждый раз, когда это представление посещается, оно сверяется с сохраненным временем, чтобы увидеть, следует ли загружать свежие данные.Затем он просит разрешения.