Загрузка iPhone для iPhone

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

Глядя на документацию Apple [ 1 ], мне нужно установить фоновый режим на «Фоновая выборка». Изучая глубже, вы можете прочитать о application:performFetchWithCompletionHandler [ 2 ], которая гласит, что:

Когда этот метод вызывается, ваше приложение имеет до 30 секунд времени настенных часов для выполнения операции загрузки и вызова указанного блока обработчика завершения … Если вашему приложению требуется много времени, чтобы вызвать обработчик завершения, он может быть указан меньше возможностей для получения данных в будущем.

Проблема заключается в том, что загрузка будет занимать более 30 секунд, и, как таковая, скорее не столкнется с яростью Apple, отправляющей обновления все меньше и меньше между ними, тем самым усугубляя проблему!

Итак, могу ли я как-то это сделать?

Кроме того, я создал грубый эксперимент, в котором я создаю NSTimer:scheduledTimerWithTimeInterval для запуска каждую минуту, которая входит в консоль. Это успешно работает как на iPhone в симуляции (работает в течение 30 минут плюс), так и когда я размещаю его на телефоне (неделю плюс) … почему бы это быть !?

Это может быть трудно сделать из-за обязательства Apple 30s. Они решили так, чтобы в конечном итоге предотвратить большую загрузку, чтобы не разрядить батарею и план данных.

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

Я имею в виду, когда ваше приложение выходит на передний план после (длительного) фона, оно может не обновляться, и это нормальный случай. Поэтому вам нужно сделать обновление, когда приложение выходит на передний план; требуется только одно обновление. В противном случае вам следует отступить и переосмыслить процесс обновления.

Найдено решение:

Вы можете обойти application:performFetchWithCompletionHandler Apple application:performFetchWithCompletionHandler и установить собственный таймер. Для этого необходимо выполнить следующие действия:

  1. Выберите « Background fetch разделе «Настройки приложения»> «Возможности»> «Фоновые режимы».

  2. В AppDelegate.m , в application:didFinishLaunchingWithOptions , добавьте следующий код:

     [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ // Nothing }]; 
  3. Теперь вы можете добавить NSTimer в свой AppDelegate и он будет продолжать работать в фоновом режиме. Например,

     _timerBg = [NSTimer scheduledTimerWithTimeInterval:1800 target:self selector:@selector(bgFunction) userInfo:nil repeats:YES]; 
  • как установить специальный файл подкачки в ios, не касаясь других подкачек
  • Нужна помощь в отчете xCode Memory -> Сравнение использования
  • Xcode 5 и изображения
  • Проблемы с памятью Xcode
  • Возьмите скриншоты сетчатки с XCode 7
  • Как настроить схему в Xcode, чтобы всегда запускать модульный тест перед архивом?
  • iOS отправляет твит с тканью без составления твитов
  • Назад к первому представлению навигационного контроллера в приложении TabBar
  • NSNotificationCenter в пользовательской ошибке контроллера UIView после увольнения и представления снова
  • масштабирование SCNNode во время выполнения с помощью жесты панорамирования
  • Как подключить кнопку к объекту opengl es в ios Xcode?
  • Interesting Posts

    Ошибка установки приложения: приложение отклонило ключ Info.plist

    Неожиданный поплавок в iPhone программирования?

    Как установить заголовок на MKAnnotation

    Ошибка интерфейса Builder? Высота панели вкладок на iPad показывает 49 вместо 56

    Xcode 6 – iOS8 – Автоматическая компоновка, как правильно установить приоритеты ограничений

    Ошибка «Отсутствие сертификата сафари» на Mac

    Является ли NS_ROOT_CLASS «безопасным» для разработки IOS?

    Как изменить частоту отвода на входной шине?

    Автоматически чирикать из приложения iOS с помощью платформы Twitter – без использования TWTweetComposeViewController

    Импорт ERROR с помощью CocoaPods

    как выделить ячейку в виде коллекции.?

    Ошибка MFMailComposeViewController iOS9 (на iPad mini 4)

    Все CKAsset доступны на всех устройствах?

    UIButton в UITableViewCell является Tappable (получение правильного события). Но проблема в том, что эффект нажатия не отображается

    Как узнать направление изменения жесты в ios?

    Давайте будем гением компьютера.