Background Modes в iOS — що це, які бувають режими та налаштування

Автор: IT Sectr Опубліковано: 2026-03-27 Час читання: 9 хв

Background Modes — це набір оголошуваних можливостей iOS, які дозволяють додатку продовжувати виконання коду після переходу в фоновий режим. Кожен режим відповідає певному типу завдань: аудіо, геолокація, VoIP, Bluetooth, fetch та processing. За даними Apple, 2026, неправильне використання Background Modes є однією з частих причин відхилення додатків під час ревю в App Store.

Головне

  • Background Modes — набір можливостей iOS для легітимного фонового виконання коду.
  • Аудіо режим — відтворення музики, подкастів, аудіокниг у фоні з керуванням через Центр керування.
  • Геолокація — відстеження місцезнаходження у фоні для навігації та фітнес-трекерів.
  • Bluetooth — робота з BLE-пристроями у фоні: фітнес-браслети, датчики, периферія.
  • Перевірка Apple — неправомірне використання режимів призводить до відхилення додатка з App Store.

Що таке Background Modes в iOS?

Background Modes — це можливості проекту Xcode, які оголошують намір додатку виконувати певні типи операцій у фоновому режимі. На відміну від Android, де додаток може запустити будь-який Service у фоні, iOS вимагає явного зазначення режиму в Info.plist. Кожен режим має суворі правила використання та перевіряється Apple під час ревю.

Як працюють Background Modes

Коли додаток переходить у фон, iOS припиняє його через 3–5 секунд. Якщо додаток оголошує Background Mode та активно використовує відповідний API (наприклад, AVAudioSession для аудіо), система переводить його в спеціальний режим виконання. Додаток залишається в оперативній пам’яті та може виконувати код, обмежений типом режиму.

Повний перелік доступних режимів

iOS підтримує такі Background Modes: Аудіо, Локація, VoIP, Bluetooth LE (BLE-аксесуари), Background Fetch (періодичні оновлення), Background Processing (тривалі завдання), External Accessory Communication, Push to Talk (PTT) та HealthKit. Кожен режим вимагає обґрунтування в описі додатка.

РежимКлюч Info.plistПризначенняВерсія iOS
AudioaudioФонове аудіо, AirPlay4.0+
LocationlocationВідстеження місцезнаходження4.0+
VoIPvoipVoIP push-сповіщення4.0+
BLEbluetooth-centralРобота з BLE-пристроями7.0+
FetchfetchПеріодичне завантаження даних7.0+
ProcessingprocessingТривалі фонові завдання13.0+
Push to Talkpush-to-talkГолосове push-to-talk16.0+

Аудіо режим (Аудіо, AirPlay та Picture in Picture)

Аудіо фоновий режим — найпоширеніший режим, що використовується музичними плеєрами, подкаст-додатками та аудіослужбами. Додаток може продовжувати відтворення аудіо, керуватися через Центр керування та відображатися на екрані блокування. Для активації достатьо налаштувати AVAudioSession з категорією .playback.

Налаштування аудіосесії

Для роботи аудіо у фоні необхідно налаштувати AVAudioSession та активувати її. Категорія .playback повідомляє системі, що додаток відтворює аудіо і повинен залишатися активним у фоні. Без цього налаштування звук зупиниться через 5–10 секунд після згортання додатка.

swift
import AVFoundation

func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(
            .playback,
            mode: .default,
            options: []
        )
        try session.setActive(true)
    } catch {
        print("Помилка аудіосесії: \(error)")
    }
}

Керування відтворенням з Центру керування

Для інтеграції з Центром керування та екраном блокування потрібно налаштувати MPRemoteCommandCenter. Він обробляє команди Відтворення, Пауза, Наступний та Попередній трек. Також необхідно оновлювати MPNowPlayingInfoProperty для відображення метаданих: назва треку, виконавець, обкладинка та прогрес відтворення.

Picture in Picture для відео

Починаючи з iOS 14, аудіо фоновий режим також підтримує Picture in Picture для відео. Додаток може продовжувати показ відео у плаваючому вікні при згортанні. Для активації використовуйте AVPictureInPictureController з AVPlayerLayer. Цей режим працює лише якщо додаток відтворює аудіодоріжку.

Геолокація (Оновлення місцезнаходження)

Фоновий режим локації дозволяє додатку отримувати оновлення місцезнаходження у фоні. Він використовується в навігаторах, фітнес-трекерах, додатках доставки та соціальних мережах. Без цього режиму додаток отримує локацію лише один раз при переході в фон, після чого оновлення припиняються.

Типи відстеження локації

CLLocationManager підтримує кілька стратегій відстеження: значні зміни локації, стандартне відстеження та моніторинг регіонів. Для фонової роботи з максимальною точністю використовуйте allowsBackgroundLocationUpdates = true та pausesLocationUpdatesAutomatically = false.

Енергоефективність та точність

Постійне відстеження локації у фоні — один з найбільш енергоємних сценаріїв. iOS автоматично адаптує частоту оновлень залежно від швидкості руху: при ходьбі оновлення кожні 10–30 секунд, при їзді на автомобілі — кожні 1–5 секунд. Для навігації використовуйте desiredAccuracy = kCLLocationAccuracyBestForNavigation.

swift
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()

Значні зміни локації

Режим significant-change location працює без фонового режиму локації — система пробуджує додаток лише при значній зміні координат (звичайно 500 м або більше). Не потребує постійного GPS, що економить батарею. Підходить для додатків погоди, які оновлюють дані при переміщенні користувача.

Bluetooth режим (LE-аксесуари)

Bluetooth LE фоновий режим дозволяє додатку взаємодіяти з BLE-пристроями у фоні. Він використовується фітнес-браслетами, медичними датчиками, пристроями Smart Home та навігацією за біконами. Режим поділяється на два підтипи: bluetooth-central (додаток під’єднується до пристроїв) та bluetooth-peripheral (додаток виступає як пристрій).

Робота в режимі Central

Додаток, що виступає як Central, може сканувати та під’єднуватися до BLE-пристроїв у фоні. Для цього вкажіть bluetooth-central в Background Modes та викличіть CBCentralManager.scanForPeripherals з опцією CBCentralManagerScanOptionAllowDuplicatesKey. У фоні сканування працює з низькою частотою — система може затримувати виявлення для економії енергії.

Робота в режимі Peripheral

Додаток, що виступає як Peripheral, може анонсувати послуги та відповідати на запити інших пристроїв. Режим bluetooth-peripheral дозволяє додатку залишатися видимим для інших BLE-пристроїв навіть у фоні. Він використовується в додатках HealthKit та IoT-рішеннях.

Моніторинг біконів та регіонів

Моніторинг iBeacon працює у фоні без додаткових дозволів — система сама відстежує вхід та вихід з регіонів Beacon. Але для сканування вмісту Beacon (proximity UUID, major, minor) потрібний дозвіл Bluetooth та bluetooth-central Background Mode. Для моніторингу використовуйте CLLocationManager з CLBeaconRegion.

VoIP та PushKit для комунікаційних додатків

VoIP фоновий режим призначений для додатків голосового зв’язку (Skype, Zoom, WhatsApp). Цей режим дозволяє додатку залишатися підключеним до сервера для прийому вхідних викликів. Починаючи з iOS 8, для VoIP використовується PushKit — фреймворк, який обробляє push-сповіщення від VoIP-сервера без участі APNs.

PushKit для вхідних викликів

PushKit — єдиний механізм, що гарантує доставку VoIP-сповіщень на пристрій. При отриманні PushKit-сповіщення система пробуджує додаток, навіть якщо він був завершений. Додаток повинен протягом 30 секунд встановити з’єднання з сервером та відобразити локальне сповіщення про вхідний виклик.

swift
import PushKit

class VoIPHandler: NSObject, PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didReceiveIncomingPushWith payload: PKPushPayload,
        for type: PKPushType,
        completion: @escaping () -> Void
    ) {
        let caller = payload.dictionaryPayload["caller"] as! String
        reportIncomingCall(from: caller)
        completion()
    }
}

Правила використання PushKit

PushKit не можна використовувати для звичайних сповіщень — лише для VoIP, watchOS-комунікацій та постачальників файлів. Apple перевіряє це під час ревю. Неправомірне використання призводить до відхилення додатка. Починаючи з iOS 13, PushKit лише доставляє сповіщення — виклик CXProvider (CallKit) для відображення екрану виклику є обов’язковим.

Режими Fetch та Processing

Background Fetch та Background Processing — це режими для фонового оновлення контенту та виконання тривалих завдань. Fetch — короткі періодичні оновлення (до 30 с), Processing — тривалі завдання (до 10 хв) з умовами (Wi-Fi, зарядка). Processing доступний лише з iOS 13+.

Background Fetch — швидке оновлення

Режим Fetch дозволяє системі періодично пробуджувати додаток для завантаження нового контенту. Система аналізує поведінку користувача та обирає оптимальний час. Додаток повинен викликати completion handler протягом 30 секунд. Fetch підходить для новинних додатків, стрічок соціальних мереж та погоди.

Background Processing — тривалі завдання

BGProcessingTask призначена для завдань, які можуть виконуватися без участі користувача: очищення кешу, синхронізація великої бази даних, обробка медіафайлів. Система запускає завдання лише за сприятливих умов — пристрій на зарядці, підключено до Wi-Fi, не в режимі низького енергоспоживання. Доступно до 10 хвилин.

Планування та вимоги

Для BGProcessingTask необхідно вказати requiresExternalPower та requiresNetworkConnectivity. Система може відкласти виконання на невизначений термін, якщо умови не виконані. На відміну від BGAppRefreshTask, який повинен виконуватися хоча б один раз на день, Processing може не виконуватися тижнями, якщо пристрій рідко заряджається.

Настанови ревю App Store для Background Modes

Apple суворо перевіряє використання Background Modes під час ревю додатків. Основне правило: кожен увімкнений режим повинен бути обґрунтований функціоналом додатка. Якщо додаток оголошує Location Mode, але не використовує геолокацію, його буде відхилено з вимогою видалити можливість.

Часті причини відхилення

Найпоширеніші порушення: Location Mode без явної необхідності (додаток запитує доступ завжди для показу реклами), Audio Mode без відтворення звуку в фоні, VoIP без PushKit, BLE Mode без Bluetooth-пристроїв. Apple може відхилити додаток навіть на етапі оновлення, якщо режим більше не використовується.

Опис у нотатках ревю

При надсиланні на ревю зазначте в Нотатках конкретне обґрунтування кожного режиму. Наприклад, «Location Background Mode використовується для відстеження маршруту користувача у фітнес-функції». Без пояснення ревюер може відхилити додаток. Для конфіденційних функцій (VoIP) Apple може запитати тестовий акаунт.

Рекомендації щодо мінімізації режимів

Використовуйте мінімально необхідний набір режимів. Якщо вашому додатку потрібне фонове завантаження даних раз на годину — не вмикайте Location Mode, використовуйте Fetch або BGAppRefreshTask. Зайві режими не тільки призводять до відхилення, але й створюють негативне враження: користувач бачить у налаштуваннях, що додаток використовує геолокацію у фоні.

Часто задавані питання

Скільки Background Modes можна увімкнути в одному додатку?

Обмежень на кількість немає, але кожен режим повинен бути обґрунтований функціоналом додатка. Увімкнення всіх режимів без необхідності — гарантована причина відхилення під час ревю. Практичне обмеження — 2–3 режими на додаток, інакше користувач побачить багато запитів на дозволи.

Як перевірити, чи активний Background Mode?

Використовуйте UIApplication.shared.applicationState — додаток може перевіряти, чи знаходиться він у фоні (state == .background). Також можна відстежувати сповіщення UIApplication.didEnterBackgroundNotification та willEnterForegroundNotification для перемикання поведінки.

У чому різниця між Audio та AirPlay Background Modes?

Audio — відтворення звуку через динамік або навушники. AirPlay — передача аудіо та відео на Apple TV та інші AirPlay-пристрої. На практиці Audio Mode охоплює обидва сценарії, оскільки AirPlay використовує аудіосесію. Окремий режим AirPlay не потрібний з iOS 7+.

Чи можна використовувати фонову локацію лише при відкритому додатку?

Так, для цього використовуйте requestWhenInUseAuthorization() замість requestAlwaysAuthorization(). Додаток отримуватиме локацію лише на передньому плані. Якщо потрібне короткочасове відстеження у фоні — викличіть startUpdatingLocation() та зупиніть у willResignActive.

Як Background Modes впливають на батарею?

Кожен режим збільшує енергоспоживання. Location Mode — найбільш енергоємний, може скоротити час роботи батареї на 30–50% при неперервному відстеженні. Audio Mode — помірний (15–20%). Fetch та Processing — мінімальний (2–5%). BLE Mode — низький (5–10%) завдяки енергоефективності Bluetooth LE.

Підсумки

  • Background Modes — оголошувані можливості iOS, які дозволяють додатку легітимно виконувати код у фоновому режимі.
  • Audio Mode — найпоширеніший, для відтворення музики, подкастів та відео через AVAudioSession з категорією .playback.
  • Location Mode — для навігації та фітнесу, найбільш енергоємний, потребує requestAlwaysAuthorization та allowsBackgroundLocationUpdates.
  • BLE Mode — робота з Bluetooth-пристроями у фоні через CBCentralManager з фоновим скануванням.
  • VoIP та PushKit — для комунікаційних додатків, гарантує доставку вхідних викликів через PKPushRegistry.
  • Fetch та Processing — короткі та тривалі фонові завдання з різними умовами виконання та часовими лімітами.
  • Apple суворо перевіряє обґрунтованість кожного режиму — неправомірне використання призводить до відхилення додатка з App Store.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також