Background Modes — is een set declareerbare iOS-mogelijkheden waarmee de app code kan blijven uitvoeren na het overschakelen naar de achtergrond. Elke modus komt overeen met een specifiek type taak: audio, geolocatie, VoIP, Bluetooth, fetch en processing. Volgens Apple, 2026 is onjuist gebruik van Background Modes een van de veelvoorkomende oorzaken van afwijzing van apps bij beoordeling in de App Store.
Belangrijkste punten
Background Modes — zijn capabilities van een Xcode-project die de intentie van de app verklaren om bepaalde soorten achtergrondbewerkingen uit te voeren. In tegenstelling tot Android, waar de app elke Service op de achtergrond kan starten, vereist iOS expliciete vermelding van de modus in Info.plist. Elke modus heeft strikte gebruiksregels en wordt door Apple gecontroleerd tijdens de beoordeling.
Wanneer de app naar de achtergrond gaat, schorst iOS deze na 3–5 seconden. Als de app een Background Mode declareert en actief de bijbehorende API gebruikt (bijv. AVAudioSession voor audio), brengt het systeem deze naar een speciale uitvoeringsmodus. De app blijft in het werkgeheugen en kan code uitvoeren die beperkt is door het type modus.
iOS ondersteunt de volgende Background Modes: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) en HealthKit. Elke modus vereist rechtvaardiging in de app-beschrijving.
| Modus | Info.plist-sleutel | Doel | iOS-versie |
|---|---|---|---|
| Audio | audio | Achtergrondaudio, AirPlay | 4.0+ |
| Location | location | Locatie volgen | 4.0+ |
| VoIP | voip | VoIP-pushmeldingen | 4.0+ |
| BLE | bluetooth-central | Werken met BLE-apparaten | 7.0+ |
| Fetch | fetch | Periodiek gegevens ophalen | 7.0+ |
| Processing | processing | Lange achtergrondtaken | 13.0+ |
| Push to Talk | push-to-talk | Spraak-push-to-talk | 16.0+ |
Audio Background Mode — de meest voorkomende modus, gebruikt door muziekspelers, podcast-apps en audiodiensten. De app kan geluid blijven afspelen, worden bediend via Control Center en worden weergegeven op het Lock Screen. Voor activering volstaat het configureren van AVAudioSession met de categorie .playback.
Voor audio op de achtergrond moet u AVAudioSession configureren en activeren. De categorie .playback informeert het systeem dat de app geluid afspeelt en actief moet blijven op de achtergrond. Zonder deze configuratie stopt het geluid binnen 5–10 seconden na het minimaliseren van de app.
import AVFoundation
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(
.playback,
mode: .default,
options: []
)
try session.setActive(true)
} catch {
print("Audiosessiefout: \(error)")
}
}
Voor integratie met Control Center en Lock Screen moet u MPRemoteCommandCenter configureren. Dit verwerkt de opdrachten Play, Pause, Next en Previous Track. Ook moet u MPNowPlayingInfoProperty bijwerken voor het weergeven van metadata: nummertitel, artiest, hoesje en afspeelvoortgang.
Vanaf iOS 14 ondersteunt Background Mode audio ook Picture in Picture voor video. De app kan video blijven tonen in een zwevend venster bij minimaliseren. Gebruik AVPictureInPictureController met AVPlayerLayer voor activering. De modus werkt alleen als de app een audiotrack afspeelt.
Location Background Mode stelt de app in staat om locatie-updates op de achtergrond te ontvangen. Wordt gebruikt in navigators, fitnesstrackers, bezorgapps en sociale netwerken. Zonder deze modus ontvangt de app slechts één keer een locatie bij het overschakelen naar de achtergrord, waarna updates stoppen.
CLLocationManager ondersteunt verschillende trackingstrategieën: significante veranderingen (significant-change location), standaard tracking (standard location) en regiomonitoring (region monitoring). Gebruik voor achtergrondwerk met maximale precisie allowsBackgroundLocationUpdates = true en pausesLocationUpdatesAutomatically = false.
Continue locatietracking op de achtergrond is een van de meest energie-intensieve scenario's. iOS past automatisch de updatefrequentie aan op basis van bewegingssnelheid: bij wandelen elke 10–30 seconden, bij autorijden elke 1–5 seconden. Gebruik voor navigatie desiredAccuracy = kCLLocationAccuracyBestForNavigation.
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()
De modus significant-change location werkt zonder Location Background Mode — het systeem wekt de app alleen bij significante coördinaatverandering (meestal 500 m of meer). Vereist geen continue GPS-inschakeling, wat batterij bespaart. Geschikt voor weer-apps die gegevens bijwerken wanneer de gebruiker beweegt.
Bluetooth LE Background Mode stelt de app in staat om op de achtergrond met BLE-apparaten te communiceren. Wordt gebruikt door fitnessarmbanden, medische sensoren, Smart Home-apparaten en Beacon-navigatie. De modus is onderverdeeld in twee subtypes: bluetooth-central (app verbindt met apparaten) en bluetooth-peripheral (app fungeert als apparaat).
De app in de rol van Central kan BLE-apparaten scannen en ermee verbinden op de achtergrond. Hiervoor moet bluetooth-central worden opgegeven in Background Modes en CBCentralManager.scanForPeripherals worden aangeroepen met de optie CBCentralManagerScanOptionAllowDuplicatesKey. Op de achtergrord werkt scannen met verminderde frequentie — het systeem kan detectie vertragen om energie te besparen.
De app in de rol van Peripheral kan diensten adverteren en reageren op verzoeken van andere apparaten. De modus bluetooth-peripheral stelt de app in staat om zichtbaar te blijven voor andere BLE-apparaten, zelfs op de achtergrond. Wordt gebruikt in HealthKit-apps en IoT-oplossingen.
iBeacon-monitoring werkt op de achtergrond zonder extra machtigingen — het systeem registreert zelf het betreden en verlaten van een Beacon-regio. Maar voor het scannen van Beacon-inhoud (proximity UUID, major, minor) is Bluetooth-toestemming en bluetooth-central Background Mode vereist. Gebruik CLLocationManager met CLBeaconRegion voor monitoring.
VoIP Background Mode is bedoeld voor spraakcommunicatie-apps (Skype, Zoom, WhatsApp). De modus stelt de app in staat verbonden te blijven met de server voor het ontvangen van inkomende oproepen. Vanaf iOS 8 wordt voor VoIP PushKit gebruikt — een framework dat Push-meldingen van de VoIP-server verwerkt zonder tussenkomst van APNs.
PushKit is het enige mechanisme dat de levering van VoIP-meldingen aan het apparaat garandeert. Bij ontvangst van een PushKit-melding wekt het systeem de app, zelfs als deze is afgesloten. De app moet binnen 30 seconden verbinding maken met de server en een lokale melding over de inkomende oproep weergeven.
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 mag niet worden gebruikt voor gewone meldingen — alleen voor VoIP, watchOS-communicatie en bestandsproviders. Apple controleert dit bij beoordeling. Bij onrechtmatig gebruik wordt de app afgewezen. Vanaf iOS 13 levert PushKit alleen de melding — het aanroepen van CXProvider (CallKit) voor het weergeven van het oproepscherm is verplicht.
Background Fetch en Background Processing — modi voor het updaten van inhoud op de achtergrond en het uitvoeren van lange taken. Fetch — korte periodieke updates (tot 30 s), Processing — lange taken (tot 10 min) met voorwaarden (Wi-Fi, opladen). Processing is alleen beschikbaar vanaf iOS 13+.
De modus Fetch stelt het systeem in staat de app periodiek te wekken voor het ophalen van nieuwe inhoud. Het systeem analyseert gebruikersgedrag en kiest het optimale moment. De app moet binnen 30 seconden de completion handler aanroepen. Fetch is geschikt voor nieuws-apps, sociale media-feeds en weer.
BGProcessingTask is bedoeld voor taken die zonder gebruikersinbreuk kunnen worden uitgevoerd: cache opschonen, synchronisatie van een grote database, verwerking van mediabestanden. Het systeem start de taak alleen onder gunstige omstandigheden — apparaat aan de lader, verbonden met Wi-Fi, niet in Low Power-modus. Beschikbaar tot 10 minuten.
Voor BGProcessingTask moet u requiresExternalPower en requiresNetworkConnectivity opgeven. Het systeem kan de uitvoering voor onbepaalde tijd uitstellen als niet aan de voorwaarden wordt voldaan. In tegenstelling tot BGAppRefreshTask, die minstens eenmaal per dag moet worden uitgevoerd, kan Processing weken niet worden uitgevoerd als het apparaat zelden wordt opgeladen.
Apple controleert streng het gebruik van Background Modes bij de beoordeling van apps. Hoofdregel: elke ingeschakelde modus moet worden gerechtvaardigd door de functionaliteit van de app. Als een app Location Mode declareert maar geen geolocatie gebruikt, wordt deze afgewezen met het verzoek de capability te verwijderen.
De meest voorkomende overtredingen: Location Mode zonder duidelijke noodzaak (app vraagt „Always”-toegang voor het tonen van advertenties), Audio Mode zonder geluidsweergave op de achtergrond, VoIP zonder PushKit, BLE Mode zonder Bluetooth-apparaten. Apple kan de app zelfs in de updatefase afwijzen als de modus niet meer wordt gebruikt.
Geef bij het indienen voor beoordeling in Notes een concrete rechtvaardiging voor elke modus. Bijvoorbeeld: „Location Background Mode wordt gebruikt voor het volgen van de gebruikersroute in de fitnessfunctie”. Zonder uitleg kan de beoordelaar de app afwijzen. Voor vertrouwelijke functies (VoIP) kan Apple om een testaccount vragen.
Gebruik de minimaal benodigde set modi. Als de app eenmaal per uur gegevens op de achtergrond moet laden — schakel Location Mode niet in, gebruik Fetch of BGAppRefreshTask. Overbodige modi leiden niet alleen tot afwijzing, maar creëren ook een negatieve indruk: de gebruiker ziet in instellingen dat de app geolocatie op de achtergrond gebruikt.
Veelgestelde vragen
Er is geen limiet aan het aantal, maar elke modus moet worden gerechtvaardigd door de functionaliteit van de app. Het inschakelen van alle modi zonder noodzaak is een gegarandeerde reden voor afwijzing bij beoordeling. Praktische limiet is 2–3 modi per app, anders ziet de gebruiker talloze machtigingsverzoeken.
Gebruik UIApplication.shared.applicationState — de app kan controleren of deze op de achtergrond staat (state == .background). U kunt ook meldingen UIApplication.didEnterBackgroundNotification en willEnterForegroundNotification volgen om het gedrag aan te passen.
Audio — geluidsweergave via luidspreker of koptelefoon. AirPlay — audio- en video-overdracht naar Apple TV en andere AirPlay-apparaten. In de praktijk dekt Audio Mode beide scenario's omdat AirPlay de audiosessie gebruikt. Een aparte AirPlay-modus is niet nodig sinds iOS 7+.
Ja, gebruik hiervoor requestWhenInUseAuthorization() in plaats van requestAlwaysAuthorization(). De app ontvangt alleen locatie op de voorgrond. Als kortstondige tracking op de achtergrond nodig is — roep startUpdatingLocation() aan en stop in willResignActive.
Elke modus verhoogt het energieverbruik. Location Mode — het duurste, kan de gebruiksduur met 30–50% verkorten bij continue tracking. Audio Mode — gemiddeld (15–20%). Fetch en Processing — minimaal (2–5%). BLE Mode — laag (5–10%) dankzij de energie-efficiëntie van Bluetooth LE.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook