Загрузка 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]; 
  • Xcode UI-файлы для проверки коллекции стали несовместимыми на iOS 11
  • ABGroupAddMember не работает на устройстве iOS4
  • Почему я получаю предупреждение о сборке, говоря: «аргумент данных не используется в строке формата»?
  • Jenkins "xcodebuild: ошибка: не содержит проект Xcode или рабочее пространство
  • Facebook iOS SDK и проблема аутентификации на основе Safari
  • Ошибка представления приложения Xcode: клиент не может подключиться к серверу
  • Как сохранить значения цвета sRGB в синхронизации по различным функциям Xcode
  • C # OrderBy и iOS дают ошибку JIT
  • Значение типа не имеет критерия участника при использовании XCTest на Xcode 8 beta
  • ld: создание для iOS Simulator, но связь с dylib?
  • вкладка нажмите кнопку делегировать
  • Interesting Posts

    tableView прокрутка вниз не показывает последнюю часть, нужно прокручивать ее вручную, кто-нибудь знает об этом?

    Как я должен убирать UIViewControllers, когда они должны быть уничтожены

    Как автоматически группировать элементы в разделах в UICollectionView?

    NSURL не конвертирует безопасную строку

    читать более интерактивный текст в конце текстового просмотра после 8 строк

    CNContactStoreDidChangeNotification несколько раз

    Как получить селектор метода класса?

    ActionSheet не отображается правильно

    Любой пользовательский интерфейс iOS похож на всплывающее меню изменения объема?

    iOS App Submission iTunes Connect – где найти список запрещенных слов?

    Activity Picker для веб-просмотра в Swift

    Получить координаты с каждого касания в UILongPressGestureRecognizer

    нужен генератор случайных слов, используя словарь

    ViewDidAppear не выполняется каждый раз, когда приложение выходит на передний план

    Как получить списки Artist с помощью MPMediaQuery?

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