Background Modes — az iOS deklarálható képességeinek halmaza, amelyek lehetővé teszik az alkalmazás számára, hogy a háttérmódba való átlépés után is folytassa a kód végrehajtását. Minden mód egy adott feladattípusnak felel meg: audio, helymeghatározás, VoIP, Bluetooth, fetch és processing. A Apple, 2026 szerint a Background Modes helytelen használata az egyik gyakori oka az alkalmazások elutasításának az App Store felülvizsgálatakor.
Főbb pontok
Background Modes — az Xcode projekt capability-i, amelyek deklarálják az alkalmazás szándékát bizonyos típusú háttérműveletek végrehajtására. Az Androidtól eltérően, ahol az alkalmazás bármilyen Service-t elindíthat a háttérben, az iOS megköveteli a mód explicit megadását az Info.plist-ben. Minden módnak szigorú használati szabályai vannak, és az Apple ellenőrzi a felülvizsgálat során.
Amikor az alkalmazás háttérbe kerül, az iOS 3–5 másodperc után felfüggeszti. Ha az alkalmazás deklarál egy Background Mode-ot és aktívan használja a megfelelő API-t (például AVAudioSession-t audiohoz), a rendszer egy speciális végrehajtási módba helyezi. Az alkalmazás a RAM-ban marad, és a mód típusa által korlátozott kódot hajthat végre.
Az iOS a következő Background Modes-okat támogatja: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) és HealthKit. Minden mód indoklást igényel az alkalmazás leírásában.
| Mód | Info.plist kulcs | Rendeltetés | iOS verzió |
|---|---|---|---|
| Audio | audio | Háttéraudio, AirPlay | 4.0+ |
| Location | location | Hely követése | 4.0+ |
| VoIP | voip | VoIP push értesítések | 4.0+ |
| BLE | bluetooth-central | BLE-eszközökkel való munka | 7.0+ |
| Fetch | fetch | Időszakos adatletöltés | 7.0+ |
| Processing | processing | Hosszú háttérfeladatok | 13.0+ |
| Push to Talk | push-to-talk | Hangalapú push-to-talk | 16.0+ |
Audio Background Mode — a legelterjedtebb mód, amelyet zenelejátszók, podcast-alkalmazások és audiószolgáltatások használnak. Az alkalmazás folytathatja a hang lejátszását, vezérelhető a Control Centeren keresztül és megjeleníthető a Lock Screen-en. Az aktiváláshoz elegendő az AVAudioSession konfigurálása a .playback kategóriával.
A háttérben történő audió működéshez konfigurálnia kell az AVAudioSession-t és aktiválnia kell. A .playback kategória tájékoztatja a rendszert, hogy az alkalmazás hangot játszik le, és aktívnak kell maradnia a háttérben. E konfiguráció nélkül a hang 5–10 másodpercen belül leáll az alkalmazás minimalizálásakor.
import AVFoundation
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(
.playback,
mode: .default,
options: []
)
try session.setActive(true)
} catch {
print("Audió munkamenet hiba: \(error)")
}
}
A Control Center-rel és a Lock Screen-nel való integrációhoz konfigurálnia kell az MPRemoteCommandCenter-t. Ez feldolgozza a Play, Pause, Next és Previous Track parancsokat. Szintén frissítenie kell az MPNowPlayingInfoProperty-t a metaadatok megjelenítéséhez: dal címe, előadó, borítókép és lejátszási állapot.
iOS 14-től kezdve a Background Mode audio támogatja a Picture in Picture funkciót is videóhoz. Az alkalmazás folytathatja a videó megjelenítését egy lebegő ablakban minimalizáláskor. Az aktiváláshoz használja az AVPictureInPictureController-t AVPlayerLayer-rel. A mód csak akkor működik, ha az alkalmazás audiósávot játszik le.
Location Background Mode lehetővé teszi az alkalmazás számára, hogy háttérben kapjon helymeghatározási frissítéseket. Navigátorokban, fitneszkövetőkben, szállítási alkalmazásokban és közösségi hálózatokban használatos. E mód nélkül az alkalmazás csak egyszer kap helyet a háttérbe lépéskor, utána a frissítések megszűnnek.
A CLLocationManager több követési stratégiát támogat: jelentős változások (significant-change location), szabványos követés (standard location) és régiófigyelés (region monitoring). A háttérben végzett maximális pontosságú munkához használja a allowsBackgroundLocationUpdates = true és pausesLocationUpdatesAutomatically = false beállításokat.
A hely folyamatos követése a háttérben az egyik legenergiaigényesebb forgatókönyv. Az iOS automatikusan igazítja a frissítések gyakoriságát a mozgás sebességéhez: gyalogláskor 10–30 másodpercenként, autóvezetéskor 1–5 másodpercenként. Navigációhoz használja a desiredAccuracy = kCLLocationAccuracyBestForNavigation beállítást.
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()
A significant-change location mód Location Background Mode nélkül működik — a rendszer csak a koordináták jelentős változásakor ébreszti fel az alkalmazást (általában 500 m vagy több). Nem igényli a GPS folyamatos bekapcsolását, ami kíméli az akkumulátort. Alkalmas időjárás-alkalmazásokhoz, amelyek a felhasználó mozgásakor frissítik az adatokat.
Bluetooth LE Background Mode lehetővé teszi az alkalmazás számára, hogy háttérben kommunikáljon BLE-eszközökkel. Fitneszkarkötők, orvosi érzékelők, Smart Home eszközök és Beacon navigáció használja. A mód két altípusra oszlik: bluetooth-central (az alkalmazás csatlakozik az eszközökhöz) és bluetooth-peripheral (az alkalmazás eszközként viselkedik).
Az alkalmazás Central szerepben szkennelhet és csatlakozhat BLE-eszközökhöz a háttérben. Ehhez meg kell adni a bluetooth-central-t a Background Modes-ban, és meg kell hívni a CBCentralManager.scanForPeripherals metódust a CBCentralManagerScanOptionAllowDuplicatesKey opcióval. A háttérben a szkennelés csökkentett frekvenciával működik — a rendszer késleltetheti az észlelést az energiatakarékosság érdekében.
Az alkalmazás Peripheral szerepben szolgáltatásokat hirdethet és válaszolhat más eszközök kéréseire. A bluetooth-peripheral mód lehetővé teszi az alkalmazás számára, hogy más BLE-eszközök számára látható maradjon, még a háttérben is. HealthKit-alkalmazásokban és IoT-megoldásokban használatos.
Az iBeacon figyelés további engedélyek nélkül működik a háttérben — a rendszer maga követi a Beacon régióba való belépést és kilépést. De a Beacon tartalmának szkenneléséhez (proximity UUID, major, minor) Bluetooth-engedély és bluetooth-central Background Mode szükséges. Használja a CLLocationManager-t CLBeaconRegion-nal a figyeléshez.
VoIP Background Mode hangkommunikációs alkalmazásokhoz (Skype, Zoom, WhatsApp) készült. A mód lehetővé teszi az alkalmazás számára, hogy csatlakozva maradjon a szerverhez a bejövő hívások fogadásához. Az iOS 8-tól kezdve a VoIP-hez PushKit-et használnak — egy keretrendszert, amely feldolgozza a Push-értesítéseket a VoIP-szerverről az APNs részvétele nélkül.
A PushKit az egyetlen mechanizmus, amely garantálja a VoIP-értesítés kézbesítését az eszközre. A PushKit-értesítés fogadásakor a rendszer felébreszti az alkalmazást, még akkor is, ha az be volt fejezve. Az alkalmazásnak 30 másodpercen belül csatlakoznia kell a szerverhez, és meg kell jelenítenie egy helyi értesítést a bejövő hívásról.
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()
}
}
A PushKit nem használható szokásos értesítésekhez — csak VoIP-hez, watchOS-kommunikációhoz és fájlszolgáltatókhoz. Az Apple ellenőrzi ezt a felülvizsgálat során. Jogosulatlan használat esetén az alkalmazást elutasítják. Az iOS 13-tól kezdve a PushKit csak az értesítést kézbesíti — a CXProvider (CallKit) meghívása a hívási képernyő megjelenítéséhez kötelező.
Background Fetch és Background Processing — módok a tartalom háttérben történő frissítéséhez és hosszú feladatok végrehajtásához. Fetch — rövid időszakos frissítések (30 másodpercig), Processing — hosszú feladatok (10 percig) feltételekkel (Wi-Fi, töltés). A Processing csak iOS 13+-tól érhető el.
A Fetch mód lehetővé teszi a rendszer számára, hogy időszakosan felébressze az alkalmazást friss tartalom letöltéséhez. A rendszer elemzi a felhasználói viselkedést, és kiválasztja az optimális időpontot. Az alkalmazásnak 30 másodpercen belül meg kell hívnia a completion handlert. A Fetch alkalmas híralkalmazásokhoz, közösségi média hírfolyamokhoz és időjáráshoz.
A BGProcessingTask olyan feladatokhoz készült, amelyeket a felhasználó részvétele nélkül lehet végrehajtani: gyorsítótár tisztítása, nagy adatbázis szinkronizálása, médiafájlok feldolgozása. A rendszer csak kedvező körülmények között indítja el a feladatot — az eszköz töltőn van, Wi-Fi-hez csatlakozik, nincs Low Power módban. Akár 10 percig elérhető.
A BGProcessingTask-hoz meg kell adni a requiresExternalPower és requiresNetworkConnectivity paramétereket. A rendszer határozatlan időre elhalaszthatja a végrehajtást, ha a feltételek nem teljesülnek. A BGAppRefreshTask-tól eltérően, amelyet legalább naponta egyszer végre kell hajtani, a Processing hetekig nem hajtódhat végre, ha az eszközt ritkán töltik.
Az Apple szigorúan ellenőrzi a Background Modes használatát az alkalmazások felülvizsgálatakor. Fő szabály: minden bekapcsolt módot indokolnia kell az alkalmazás funkcionalitásának. Ha egy alkalmazás Location Mode-ot deklarál, de nem használ helymeghatározást, elutasítják a capability eltávolítására vonatkozó kéréssel.
A leggyakoribb jogsértések: Location Mode nyilvánvaló szükség nélkül (az alkalmazás hozzáférést kér a hirdetések megjelenítéséhez), Audio Mode hang lejátszása nélkül a háttérben, VoIP PushKit nélkül, BLE Mode Bluetooth-eszközök nélkül. Az Apple az alkalmazást még a frissítési szakaszban is elutasíthatja, ha a mód már nincs használatban.
A felülvizsgálatra küldéskor adja meg a Notes-ban az egyes módok konkrét indoklását. Például: „A Location Background Mode a felhasználó útvonalának követésére szolgál a fitneszfunkcióban”. Magyarázat nélkül a felülvizsgáló elutasíthatja az alkalmazást. Bizalmas funkciók (VoIP) esetén az Apple tesztfiókot kérhet.
Használja a minimálisan szükséges módkészletet. Ha az alkalmazásnak óránként egyszer kell adatokat letöltenie a háttérben — ne kapcsolja be a Location Mode-ot, használja a Fetch-t vagy a BGAppRefreshTask-ot. A felesleges módok nemcsak elutasításhoz vezetnek, hanem negatív benyomást is keltenek: a felhasználó a beállításokban látja, hogy az alkalmazás háttérben használja a helymeghatározást.
Gyakran Ismételt Kérdések
Nincs korlátozás a számra vonatkozóan, de minden módot indokolnia kell az alkalmazás funkcionalitásának. Az összes mód szükségtelen bekapcsolása garantált ok az elutasításra a felülvizsgálat során. Gyakorlati korlát 2–3 mód alkalmazásonként, különben a felhasználó számos engedélykérést fog látni.
Használja a UIApplication.shared.applicationState tulajdonságot — az alkalmazás ellenőrizheti, hogy háttérben van-e (state == .background). Nyomon követheti a UIApplication.didEnterBackgroundNotification és willEnterForegroundNotification értesítéseket a viselkedés megváltoztatásához.
Audio — hang lejátszása hangszórón vagy fejhallgatón keresztül. AirPlay — hang és video továbbítása Apple TV-re és más AirPlay-eszközökre. A gyakorlatban az Audio Mode mindkét forgatókönyvet lefedi, mivel az AirPlay az audió munkamenetet használja. Külön AirPlay mód nem szükséges iOS 7+-tól.
Igen, ehhez használja a requestWhenInUseAuthorization() metódust a requestAlwaysAuthorization() helyett. Az alkalmazás csak előtérben kap helyet. Ha rövid távú háttérkövetésre van szükség — hívja a startUpdatingLocation() metódust, és állítsa le a willResignActive-ben.
Minden mód növeli az energiafogyasztást. Location Mode — a legköltségesebb, 30–50%-kal csökkentheti a működési időt folyamatos követés esetén. Audio Mode — mérsékelt (15–20%). Fetch és Processing — minimális (2–5%). BLE Mode — alacsony (5–10%) a Bluetooth LE energiahatékonyságának köszönhetően.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is