Работа в фоновом режиме

Сегодня мы поговорим о такой штуке, как работа ай-железок в фоновом режиме.

Многие слышали, а владельцы девайсов и сами видели, что в яблочной мобильной системе долгое время не было фонового режима работы в принципе. Начиная с iOS 4 ситуация улучшилась. Нет, полноценной работы в фоне нет до сих пор. Зато ваши приложения уже имеют хотя бы какие-то инструменты для улучшения своей работы. Таких инструментов четыре. Рассмотрим ниже.

В первую группу входят три инструмента, которые соответственно позволяют приложению работать в фоне с:

  1. voip
  2. аудио
  3. геолокацией

Что это нам дает? Хотя бы то, что можно написать свой проигрыватель или свой скайп.

Активируется это в настройках. Например, для возможности проигрывания аудио в фоновом режиме, требуется в .plist добавить параметр Required background modes (правой кнопкой на пустом месте и выбираем Add Row, затем указываем название параметра). Внутри созданного параметра типа массив выбираем нулевой элемент и вводим значение App plays audio.

Кроме того, после создания и инициализации проигрывателя (например, AVPlayer) необходимо изменить настройки аудио сессии:

Ко второй группе относится инструмент, при помощи которого программа запрашивает у системы дополнительное время на свою деактивацию. Деактивация программы происходит при автоматической блокировке экрана телефона или при нажатии на кнопку Home. В обоих случаях приложение уходит в пассивный режим и частично выгружается из памяти. Это очень удобно пользователю, но доставляет проблемы разработчику. Например, если программа скачивает некие данные, то при деактивации процесс скачивания автоматически прерывается. Единственный выход — запросить дополнительное время и либо докачать, либо поставить закачку на паузу.

Дополнительного времени система выделяет до 10 минут. Если ваша программа не успеет за это время доделать все необходимое, она будет принудительно деактивирована. Запросить дополнительное время можно путем определения метода applicationDidEnterBackground: протокола UIApplicationDelegate.

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

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.