Background Modes v iOS — co to je, jaké režimy existují a nastavení

Autor: IT Sectr Publikováno: 2026-03-27 Doba čtení: 9 min

Background Modes — je sada deklarovatelných schopností iOS, které umožňují aplikaci pokračovat v provádění kódu po přechodu do režimu pozadí. Každý režim odpovídá určitému typu úloh: audio, geolokace, VoIP, Bluetooth, fetch a processing. Podle Apple, 2026 je nesprávné použití Background Modes jedním z častých důvodů zamítnutí aplikací při revizi v App Store.

Hlavní body

  • Background Modes — sada iOS capability pro legitimní provádění kódu na pozadí.
  • Audio režim — přehrávání hudby, podcastů, audioknih na pozadí s ovládáním přes Control Center.
  • Geolokace — sledování polohy na pozadí pro navigaci a fitness trackery.
  • Bluetooth — práce s BLE zařízeními na pozadí: fitness náramky, senzory, periferie.
  • Kontrola Apple — neoprávněné použití režimů vede k zamítnutí aplikace z App Store.

Co jsou Background Modes v iOS?

Background Modes — jsou capability projektu Xcode, které deklarují záměr aplikace provádět určité typy operací na pozadí. Na rozdíl od Androidu, kde aplikace může spustit jakýkoli Service na pozadí, iOS vyžaduje explicitní uvedení režimu v Info.plist. Každý režim má přísná pravidla použití a je kontrolován Apple při revizi.

Jak Background Modes fungují

Když aplikace přejde na pozadí, iOS ji pozastaví po 3–5 sekundách. Pokud aplikace deklaruje Background Mode a aktivně používá odpovídající API (např. AVAudioSession pro audio), systém ji převede do speciálního režimu provádění. Aplikace zůstává v paměti RAM a může provádět kód omezený typem režimu.

Úplný seznam dostupných režimů

iOS podporuje následující Background Modes: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) a HealthKit. Každý režim vyžaduje odůvodnění v popisu aplikace.

RežimKlíč Info.plistÚčelVerze iOS
AudioaudioAudio na pozadí, AirPlay4.0+
LocationlocationSledování polohy4.0+
VoIPvoipVoIP push oznámení4.0+
BLEbluetooth-centralPráce s BLE zařízeními7.0+
FetchfetchPeriodické stahování dat7.0+
ProcessingprocessingDlouhodobé úlohy na pozadí13.0+
Push to Talkpush-to-talkHlasové push-to-talk16.0+

Audio režim (Audio, AirPlay a Picture in Picture)

Audio Background Mode — nejrozšířenější režim, používaný hudebními přehrávači, podcastovými aplikacemi a audio službami. Aplikace může pokračovat v přehrávání zvuku, být ovládána přes Control Center a zobrazovat se na Lock Screen. Pro aktivaci stačí nakonfigurovat AVAudioSession s kategorií .playback.

Konfigurace audio relace

Pro práci zvuku na pozadí je třeba nakonfigurovat AVAudioSession a aktivovat ji. Kategorie .playback informuje systém, že aplikace přehrává zvuk a musí zůstat aktivní na pozadí. Bez této konfigurace se zvuk zastaví do 5–10 sekund po minimalizaci aplikace.

swift
import AVFoundation

func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(
            .playback,
            mode: .default,
            options: []
        )
        try session.setActive(true)
    } catch {
        print("Chyba audio relace: \(error)")
    }
}

Ovládání přehrávání z Control Center

Pro integraci s Control Center a Lock Screen je třeba nakonfigurovat MPRemoteCommandCenter. Ten zpracovává příkazy Play, Pause, Next a Previous Track. Také je třeba aktualizovat MPNowPlayingInfoProperty pro zobrazení metadat: název skladby, interpret, obal a průběh přehrávání.

Picture in Picture pro video

Od iOS 14 podporuje Background Mode audio také Picture in Picture pro video. Aplikace může pokračovat v zobrazování videa v plovoucím okně při minimalizaci. Pro aktivaci použijte AVPictureInPictureController s AVPlayerLayer. Režim funguje pouze pokud aplikace přehrává zvukovou stopu.

Geolokace (Location updates)

Location Background Mode umožňuje aplikaci přijímat aktualizace geolokace na pozadí. Používá se v navigacích, fitness trackerech, doručovacích aplikacích a sociálních sítích. Bez tohoto režimu aplikace obdrží polohu pouze jednou při přechodu na pozadí, poté aktualizace ustanou.

Typy sledování polohy

CLLocationManager podporuje několik strategií sledování: významné změny (significant-change location), standardní sledování (standard location) a sledování regionů (region monitoring). Pro práci na pozadí s maximální přesností použijte allowsBackgroundLocationUpdates = true a pausesLocationUpdatesAutomatically = false.

Energetická účinnost a přesnost

Kontinuální sledování polohy na pozadí je jeden z nejnáročnějších scénářů na energii. iOS automaticky přizpůsobuje frekvenci aktualizací podle rychlosti pohybu: při chůzi každých 10–30 sekund, při jízdě autem každých 1–5 sekund. Pro navigaci použijte desiredAccuracy = kCLLocationAccuracyBestForNavigation.

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

Významné změny polohy

Režim significant-change location funguje bez Location Background Mode — systém probouzí aplikaci pouze při významné změně souřadnic (obvykle 500 m a více). Nevyžaduje nepřetržité zapnutí GPS, což šetří baterii. Vhodný pro počasové aplikace, které aktualizují data při pohybu uživatele.

Bluetooth režim (LE accessories)

Bluetooth LE Background Mode umožňuje aplikaci interagovat s BLE zařízeními na pozadí. Používají jej fitness náramky, lékařské senzory, zařízení Smart Home a navigace Beacon. Režim se dělí na dva podtypy: bluetooth-central (aplikace se připojuje k zařízením) a bluetooth-peripheral (aplikace vystupuje jako zařízení).

Práce v režimu Central

Aplikace v roli Central může skenovat a připojovat BLE zařízení na pozadí. K tomu je třeba uvést bluetooth-central v Background Modes a zavolat CBCentralManager.scanForPeripherals s volbou CBCentralManagerScanOptionAllowDuplicatesKey. Na pozadí skenování pracuje se sníženou frekvencí — systém může zpozdit detekci kvůli úspoře energie.

Práce v režimu Peripheral

Aplikace v roli Peripheral může inzerovat služby a odpovídat na požadavky jiných zařízení. Režim bluetooth-peripheral umožňuje aplikaci zůstat viditelnou pro jiná BLE zařízení i na pozadí. Používá se v aplikacích HealthKit a IoT řešeních.

Beacon a Region Monitoring

Sledování iBeacon funguje na pozadí bez dalších oprávnění — systém sám sleduje vstup a výstup z regionu Beacon. Ale pro skenování obsahu Beacon (proximity UUID, major, minor) je potřeba oprávnění Bluetooth a bluetooth-central Background Mode. Pro sledování použijte CLLocationManager s CLBeaconRegion.

VoIP a PushKit pro komunikační aplikace

VoIP Background Mode je určen pro aplikace hlasové komunikace (Skype, Zoom, WhatsApp). Režim umožňuje aplikaci zůstat připojenou k serveru pro příjem příchozích hovorů. Od iOS 8 se pro VoIP používá PushKit — framework, který zpracovává Push oznámení z VoIP serveru bez účasti APNs.

PushKit pro příchozí hovory

PushKit je jediný mechanismus, který zaručuje doručení VoIP oznámení na zařízení. Při přijetí PushKit oznámení systém probudí aplikaci, i když byla ukončena. Aplikace se musí do 30 sekund připojit k serveru a zobrazit místní oznámení o příchozím hovoru.

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()
    }
}

Pravidla použití PushKit

PushKit nelze použít pro běžná oznámení — pouze pro VoIP, watchOS komunikaci a poskytovatele souborů. Apple to kontroluje při revizi. Při neoprávněném použití je aplikace zamítnuta. Od iOS 13 PushKit pouze doručuje oznámení — volání CXProvider (CallKit) pro zobrazení obrazovky hovoru je povinné.

Režimy Fetch a Processing

Background Fetch a Background Processing — režimy pro aktualizaci obsahu na pozadí a provádění dlouhodobých úloh. Fetch — krátké periodické aktualizace (do 30 s), Processing — dlouhodobé úlohy (do 10 min) s podmínkami (Wi-Fi, nabíjení). Processing je dostupný pouze od iOS 13+.

Background Fetch — rychlá aktualizace

Režim Fetch umožňuje systému periodicky probouzet aplikaci pro stažení čerstvého obsahu. Systém analyzuje chování uživatele a vybírá optimální čas. Aplikace musí zavolat completion handler do 30 sekund. Fetch je vhodný pro zpravodajské aplikace, feedy sociálních sítí a počasí.

Background Processing — dlouhodobé úlohy

BGProcessingTask je určena pro úlohy, které lze provádět bez účasti uživatele: čištění mezipaměti, synchronizace velké databáze, zpracování mediálních souborů. Systém spouští úlohu pouze za příznivých podmínek — zařízení na nabíječce, připojeno k Wi-Fi, není v režimu Low Power. K dispozici až 10 minut.

Plánování a požadavky

Pro BGProcessingTask je třeba uvést requiresExternalPower a requiresNetworkConnectivity. Systém může odložit provedení na neurčito, pokud nejsou splněny podmínky. Na rozdíl od BGAppRefreshTask, který se musí provést alespoň jednou denně, Processing nemusí být proveden týdny, pokud je zařízení nabíjeno zřídka.

App Store Review Guidelines pro Background Modes

Apple přísně kontroluje použití Background Modes při revizi aplikací. Hlavní pravidlo: každý zapnutý režim musí být odůvodněn funkcionalitou aplikace. Pokud aplikace deklaruje Location Mode, ale nepoužívá geolokaci, bude zamítnuta s požadavkem na odstranění capability.

Časté důvody zamítnutí

Nejčastější porušení: Location Mode bez zjevné potřeby (aplikace žádá o přístup pro zobrazování reklam), Audio Mode bez přehrávání zvuku na pozadí, VoIP bez PushKit, BLE Mode bez Bluetooth zařízení. Apple může zamítnout aplikaci i ve fázi aktualizace, pokud režim již není používán.

Popis v revizi

Při odesílání k revizi uveďte v Notes konkrétní odůvodnění každého režimu. Například: „Location Background Mode se používá pro sledování trasy uživatele ve fitness funkci”. Bez vysvětlení může recenzent aplikaci zamítnout. Pro důvěrné funkce (VoIP) může Apple požádat o testovací účet.

Doporučení pro minimalizaci režimů

Používejte minimálně nezbytnou sadu režimů. Pokud aplikace potřebuje stahovat data na pozadí jednou za hodinu — nezapínejte Location Mode, použijte Fetch nebo BGAppRefreshTask. Nadbytečné režimy nejen vedou k zamítnutí, ale také vytvářejí negativní dojem: uživatel v nastavení vidí, že aplikace používá geolokaci na pozadí.

Často kladené otázky

Kolik Background Modes lze zapnout v jedné aplikaci?

Neexistuje omezení počtu, ale každý režim musí být odůvodněn funkcionalitou aplikace. Zapnutí všech režimů bez potřeby je garantovaný důvod zamítnutí při revizi. Praktické omezení je 2–3 režimy na aplikaci, jinak uživatel uvidí mnoho žádostí o oprávnění.

Jak zkontrolovat, zda je Background Mode aktivní?

Použijte UIApplication.shared.applicationState — aplikace může zkontrolovat, zda je na pozadí (state == .background). Můžete také sledovat oznámení UIApplication.didEnterBackgroundNotification a willEnterForegroundNotification pro změnu chování.

Jaký je rozdíl mezi Audio a AirPlay Background Modes?

Audio — přehrávání zvuku přes reproduktor nebo sluchátka. AirPlay — přenos zvuku a videa na Apple TV a další AirPlay zařízení. V praxi Audio Mode pokrývá oba scénáře, protože AirPlay používá audio relaci. Samostatný režim AirPlay není vyžadován od iOS 7+.

Lze Background Location používat pouze při otevřené aplikaci?

Ano, k tomu použijte requestWhenInUseAuthorization() místo requestAlwaysAuthorization(). Aplikace bude dostávat polohu pouze na popředí. Pokud je potřeba krátkodobé sledování na pozadí — zavolejte startUpdatingLocation() a zastavte v willResignActive.

Jak Background Modes ovlivňují baterii?

Každý režim zvyšuje spotřebu energie. Location Mode — nejnáročnější, může zkrátit dobu provozu o 30–50% při nepřetržitém sledování. Audio Mode — mírný (15–20%). Fetch a Processing — minimální (2–5%). BLE Mode — nízký (5–10%) díky energetické účinnosti Bluetooth LE.

Shrnutí

  • Background Modes — deklarovatelné iOS capability, které umožňují aplikaci legitimně provádět kód na pozadí.
  • Audio Mode — nejrozšířenější, pro přehrávání hudby, podcastů a videa přes AVAudioSession s kategorií .playback.
  • Location Mode — pro navigaci a fitness, nejnáročnější na energii, vyžaduje requestAlwaysAuthorization a allowsBackgroundLocationUpdates.
  • BLE Mode — práce s Bluetooth zařízeními na pozadí přes CBCentralManager se skenováním na pozadí.
  • VoIP a PushKit — pro komunikační aplikace, zaručuje doručení příchozích hovorů přes PKPushRegistry.
  • Fetch a Processing — krátké a dlouhé úlohy na pozadí s různými podmínkami provádění a časovými limity.
  • Apple přísně kontroluje odůvodnění každého režimu — neoprávněné použití vede k zamítnutí aplikace z App Store.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také