Background Modes i iOS — vad är det, vilka lägen finns och konfiguration

Författare: IT Sectr Publicerad: 2026-03-27 Lästid: 9 min

Background Modes — är en uppsättning deklarerbara iOS-funktioner som gör att appen kan fortsätta köra kod efter övergången till bakgrundsläget. Varje läge motsvarar en specifik typ av uppgift: ljud, geolokalisering, VoIP, Bluetooth, fetch och processing. Enligt Apple, 2026 är felaktig användning av Background Modes en av de vanligaste orsakerna till att appar avvisas vid granskning i App Store.

Huvudpunkter

  • Background Modes — uppsättning iOS-capability för legitim bakgrundskodkörning.
  • Ljudläge — uppspelning av musik, podcaster, ljudböcker i bakgrunden med kontroll via Control Center.
  • Geolokalisering — positionsspårning i bakgrunden för navigering och fitnesstrackers.
  • Bluetooth — arbete med BLE-enheter i bakgrunden: fitnessarmband, sensorer, kringutrustning.
  • Apple-kontroll — otillåten användning av lägen leder till avvisning av appen från App Store.

Vad är Background Modes i iOS?

Background Modes — är capability i ett Xcode-projekt som deklarerar appens avsikt att utföra vissa typer av bakgrundsoperationer. Till skillnad från Android, där appen kan starta vilken Service som helst i bakgrunden, kräver iOS explicit angivelse av läget i Info.plist. Varje läge har strikta användningsregler och kontrolleras av Apple vid granskning.

Hur Background Modes fungerar

När appen går till bakgrunden pausar iOS den efter 3–5 sekunder. Om appen deklarerar ett Background Mode och aktivt använder motsvarande API (t.ex. AVAudioSession för ljud), flyttar systemet den till ett särskilt körningsläge. Appen finns kvar i RAM-minnet och kan köra kod som begränsas av lägestypen.

Fullständig lista över tillgängliga lägen

iOS stöder följande Background Modes: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) och HealthKit. Varje läge kräver motivering i appbeskrivningen.

LägeInfo.plist-nyckelSyfteiOS-version
AudioaudioBakgrundsljud, AirPlay4.0+
LocationlocationPositionsspårning4.0+
VoIPvoipVoIP push-meddelanden4.0+
BLEbluetooth-centralArbete med BLE-enheter7.0+
FetchfetchPeriodisk datahämtning7.0+
ProcessingprocessingLånga bakgrundsuppgifter13.0+
Push to Talkpush-to-talkRöst-push-to-talk16.0+

Ljudläge (Audio, AirPlay och Picture in Picture)

Audio Background Mode — det vanligaste läget, som används av musikspelare, podcastappar och ljudtjänster. Appen kan fortsätta spela upp ljud, styras via Control Center och visas på Lock Screen. För aktivering räcker det att konfigurera AVAudioSession med kategorin .playback.

Konfigurera ljudsessionen

För ljud i bakgrunden måste du konfigurera AVAudioSession och aktivera den. Kategorin .playback informerar systemet om att appen spelar upp ljud och måste förbli aktiv i bakgrunden. Utan denna konfiguration stoppas ljudet inom 5–10 sekunder efter att appen minimeras.

swift
import AVFoundation

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

Kontroll av uppspelning från Control Center

För integration med Control Center och Lock Screen måste du konfigurera MPRemoteCommandCenter. Detta bearbetar kommandona Play, Pause, Next och Previous Track. Du måste också uppdatera MPNowPlayingInfoProperty för att visa metadata: låttitel, artist, omslag och uppspelningsförlopp.

Picture in Picture för video

Från och med iOS 14 stöder Background Mode ljud även Picture in Picture för video. Appen kan fortsätta visa video i ett flytande fönster vid minimering. För aktivering använder du AVPictureInPictureController med AVPlayerLayer. Läget fungerar bara om appen spelar upp ett ljudspår.

Geolokalisering (Location updates)

Location Background Mode gör att appen kan ta emot geolokaliseringsuppdateringar i bakgrunden. Används i navigatorer, fitnesstrackers, leveransappar och sociala nätverk. Utan detta läge får appen bara position en gång vid övergången till bakgrunden, varefter uppdateringarna upphör.

Typer av positionsspårning

CLLocationManager stöder flera spårningsstrategier: betydande förändringar (significant-change location), standardspårning (standard location) och regionövervakning (region monitoring). För bakgrundsarbete med maximal precision använder du allowsBackgroundLocationUpdates = true och pausesLocationUpdatesAutomatically = false.

Energieffektivitet och precision

Kontinuerlig positionsspårning i bakgrunden är ett av de mest energikrävande scenarierna. iOS justerar automatiskt uppdateringsfrekvensen baserat på rörelsehastigheten: vid promenad var 10–30:e sekund, vid bilkörning var 1–5:e sekund. För navigering använder du desiredAccuracy = kCLLocationAccuracyBestForNavigation.

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

Betydande positionsförändringar

Läget significant-change location fungerar utan Location Background Mode — systemet väcker appen endast vid betydande koordinatförändring (vanligtvis 500 m eller mer). Kräver inte kontinuerlig GPS, vilket sparar batteri. Lämpligt för väderappar som uppdaterar data när användaren rör sig.

Bluetooth-läge (LE accessories)

Bluetooth LE Background Mode gör att appen kan interagera med BLE-enheter i bakgrunden. Används av fitnessarmband, medicinska sensorer, Smart Home-enheter och Beacon-navigering. Läget är uppdelat i två undertyper: bluetooth-central (appen ansluter till enheter) och bluetooth-peripheral (appen fungerar som enhet).

Arbete i Central-läge

Appen i rollen som Central kan skanna och ansluta BLE-enheter i bakgrunden. För detta måste du ange bluetooth-central i Background Modes och anropa CBCentralManager.scanForPeripherals med alternativet CBCentralManagerScanOptionAllowDuplicatesKey. I bakgrunden fungerar skanning med reducerad frekvens — systemet kan fördröja detektering för att spara energi.

Arbete i Peripheral-läge

Appen i rollen som Peripheral kan annonsera tjänster och svara på förfrågningar från andra enheter. Bluetooth-peripheral-läget gör att appen kan förbli synlig för andra BLE-enheter även i bakgrunden. Används i HealthKit-appar och IoT-lösningar.

Beacon och Region Monitoring

iBeacon-övervakning fungerar i bakgrunden utan extra tillstånd — systemet spårar själv in- och utträde från Beacon-regionen. Men för att skanna Beacon-innehåll (proximity UUID, major, minor) krävs Bluetooth-tillstånd och bluetooth-central Background Mode. Använd CLLocationManager med CLBeaconRegion för övervakning.

VoIP och PushKit för kommunikationsappar

VoIP Background Mode är avsett för röstkommunikationsappar (Skype, Zoom, WhatsApp). Läget gör att appen kan förbli ansluten till servern för att ta emot inkommande samtal. Från och med iOS 8 används PushKit för VoIP — ett ramverk som bearbetar Push-meddelanden från VoIP-servern utan APNs inblandning.

PushKit för inkommande samtal

PushKit är den enda mekanismen som garanterar leverans av VoIP-meddelanden till enheten. Vid mottagning av ett PushKit-meddelande väcker systemet appen, även om den har avslutats. Appen måste ansluta till servern inom 30 sekunder och visa ett lokalt meddelande om det inkommande samtalet.

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

Regler för PushKit-användning

PushKit får inte användas för vanliga meddelanden — endast för VoIP, watchOS-kommunikation och filleverantörer. Apple kontrollerar detta vid granskning. Vid otillåten användning avvisas appen. Från och med iOS 13 levererar PushKit endast meddelandet — anrop av CXProvider (CallKit) för att visa samtalskärmen är obligatoriskt.

Fetch- och Processing-lägen

Background Fetch och Background Processing — lägen för att uppdatera innehåll i bakgrunden och utföra långa uppgifter. Fetch — korta periodiska uppdateringar (upp till 30 s), Processing — långa uppgifter (upp till 10 min) med villkor (Wi-Fi, laddning). Processing är endast tillgängligt från iOS 13+.

Background Fetch — snabb uppdatering

Läget Fetch gör att systemet periodvis kan väcka appen för att hämta nytt innehåll. Systemet analyserar användarbeteende och väljer optimal tid. Appen måste anropa completion handlern inom 30 sekunder. Fetch är lämpligt för nyhetsappar, sociala medieflöden och väder.

Background Processing — långa uppgifter

BGProcessingTask är avsett för uppgifter som kan utföras utan användarmedverkan: rensa cache, synkronisera en stor databas, bearbeta mediafiler. Systemet kör uppgiften endast under gynnsamma förhållanden — enheten på laddning, ansluten till Wi-Fi, inte i Low Power-läge. Tillgängligt upp till 10 minuter.

Planering och krav

För BGProcessingTask måste du ange requiresExternalPower och requiresNetworkConnectivity. Systemet kan skjuta upp körningen på obestämd tid om villkoren inte uppfylls. Till skillnad från BGAppRefreshTask, som måste köras minst en gång om dagen, kan Processing förbli okörd i veckor om enheten sällan laddas.

App Store Review Guidelines för Background Modes

Apple kontrollerar strikt användningen av Background Modes vid granskning av appar. Huvudregel: varje aktiverat läge måste motiveras av appens funktionalitet. Om en app deklarerar Location Mode men inte använder geolokalisering, avvisas den med begäran om att ta bort capability.

Vanliga orsaker till avvisning

De vanligaste överträdelserna: Location Mode utan tydligt behov (appen begär åtkomst för att visa annonser), Audio Mode utan ljuduppspelning i bakgrunden, VoIP utan PushKit, BLE Mode utan Bluetooth-enheter. Apple kan avvisa appen även i uppdateringsfasen om läget inte längre används.

Beskrivning i granskningen

Vid inlämning för granskning, ange i Notes konkret motivering för varje läge. Till exempel: ”Location Background Mode används för att spåra användarens rutt i fitnessfunktionen”. Utan förklaring kan granskaren avvisa appen. För konfidentiella funktioner (VoIP) kan Apple begära ett testkonto.

Rekommendationer för att minimera lägen

Använd minimalt nödvändig uppsättning lägen. Om appen behöver ladda data i bakgrunden en gång i timmen — aktivera inte Location Mode, använd Fetch eller BGAppRefreshTask. Överflödiga lägen leder inte bara till avvisning utan skapar också ett negativt intryck: användaren ser i inställningarna att appen använder geolokalisering i bakgrunden.

Vanliga frågor

Hur många Background Modes kan aktiveras i en app?

Det finns ingen gräns för antalet, men varje läge måste motiveras av appens funktionalitet. Att aktivera alla lägen utan behov är en garanterad orsak till avvisning vid granskning. Praktisk gräns är 2–3 lägen per app, annars kommer användaren att se många behörighetsförfrågningar.

Hur kontrollerar jag om Background Mode är aktivt?

Använd UIApplication.shared.applicationState — appen kan kontrollera om den är i bakgrunden (state == .background). Du kan också övervaka meddelandena UIApplication.didEnterBackgroundNotification och willEnterForegroundNotification för att ändra beteende.

Vad är skillnaden mellan Audio och AirPlay Background Modes?

Audio — ljuduppspelning via högtalare eller hörlurar. AirPlay — överföring av ljud och video till Apple TV och andra AirPlay-enheter. I praktiken täcker Audio Mode båda scenarierna eftersom AirPlay använder ljudsessionen. Ett separat AirPlay-läge krävs inte från iOS 7+.

Kan Background Location användas endast när appen är öppen?

Ja, för detta använder du requestWhenInUseAuthorization() istället för requestAlwaysAuthorization(). Appen kommer endast att ta emot position i förgrunden. Om kortvarig spårning i bakgrunden behövs — anropa startUpdatingLocation() och stoppa i willResignActive.

Hur påverkar Background Modes batteriet?

Varje läge ökar energiförbrukningen. Location Mode — det dyraste, kan minska drifttiden med 30–50% vid kontinuerlig spårning. Audio Mode — måttlig (15–20%). Fetch och Processing — minimal (2–5%). BLE Mode — låg (5–10%) tack vare energieffektiviteten hos Bluetooth LE.

Sammanfattning

  • Background Modes — deklarerbara iOS-capability som gör att appen legitimt kan köra kod i bakgrunden.
  • Audio Mode — det vanligaste, för uppspelning av musik, podcaster och video via AVAudioSession med kategorin .playback.
  • Location Mode — för navigering och fitness, mest energikrävande, kräver requestAlwaysAuthorization och allowsBackgroundLocationUpdates.
  • BLE Mode — arbete med Bluetooth-enheter i bakgrunden via CBCentralManager med bakgrundsskanning.
  • VoIP och PushKit — för kommunikationsappar, garanterar leverans av inkommande samtal via PKPushRegistry.
  • Fetch och Processing — korta och långa bakgrundsuppgifter med olika körningsvillkor och tidsgränser.
  • Apple kontrollerar strikt motiveringen av varje läge — otillåten användning leder till avvisning av appen från App Store.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också