Background Modes in iOS — what it is, types of modes and configuration

Author: IT Sectr Published: 2026-03-27 Reading time: 9 min

Background Modes are a set of declarable iOS capabilities that allow an app to continue executing code after transitioning to the background. Each mode corresponds to a specific type of task: audio, geolocation, VoIP, Bluetooth, fetch, and processing. According to Apple, 2026, improper use of Background Modes is one of the common reasons for app rejection during App Store review.

Key Takeaways

  • Background Modes — a set of iOS capabilities for legitimate background code execution.
  • Audio Mode — playing music, podcasts, audiobooks in the background with control via Control Center.
  • Geolocation — tracking location in the background for navigation and fitness trackers.
  • Bluetooth — working with BLE devices in the background: fitness bands, sensors, peripherals.
  • Apple Review — improper use of modes leads to app rejection from the App Store.

What are Background Modes in iOS?

Background Modes are Xcode project capabilities that declare the app’s intention to perform specific types of background operations. Unlike Android, where an app can launch any Service in the background, iOS requires explicit declaration of the mode in Info.plist. Each mode has strict usage rules and is verified by Apple during review.

How Background Modes Work

When an app transitions to the background, iOS suspends it within 3–5 seconds. If the app declares a Background Mode and actively uses the corresponding API (e.g., AVAudioSession for audio), the system puts it into a special execution mode. The app remains in memory and can execute code limited by the mode type.

Full List of Available Modes

iOS supports the following Background Modes: Audio, Location, VoIP, Bluetooth LE (BLE accessories), Background Fetch (periodic updates), Background Processing (long-running tasks), External Accessory Communication, Push to Talk (PTT), and HealthKit. Each mode requires justification in the app description.

ModeInfo.plist KeyPurposeiOS Version
AudioaudioBackground audio, AirPlay4.0+
LocationlocationLocation tracking4.0+
VoIPvoipVoIP push notifications4.0+
BLEbluetooth-centralWorking with BLE devices7.0+
FetchfetchPeriodic data download7.0+
ProcessingprocessingLong-running background tasks13.0+
Push to Talkpush-to-talkPush-to-talk voice16.0+

Audio Mode (Audio, AirPlay, and Picture in Picture)

Audio Background Mode is the most common mode, used by music players, podcast apps, and audio services. The app can continue audio playback, be controlled via Control Center, and appear on the Lock Screen. To activate it, simply configure AVAudioSession with the .playback category.

Configuring the Audio Session

For background audio to work, you need to configure AVAudioSession and activate it. The .playback category tells the system that the app is playing audio and should remain active in the background. Without this configuration, audio will stop 5–10 seconds after the app is minimized.

swift
import AVFoundation

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

Controlling Playback from Control Center

To integrate with Control Center and Lock Screen, you need to configure MPRemoteCommandCenter. It handles Play, Pause, Next, and Previous Track commands. You also need to update MPNowPlayingInfoProperty to display metadata: track name, artist, artwork, and playback progress.

Picture in Picture for Video

Starting with iOS 14, the Audio Background Mode also supports Picture in Picture for video. The app can continue showing video in a floating window when minimized. To activate it, use AVPictureInPictureController with AVPlayerLayer. This mode only works if the app is playing an audio track.

Geolocation (Location updates)

Location Background Mode allows the app to receive location updates in the background. It is used in navigation apps, fitness trackers, delivery apps, and social networks. Without this mode, the app receives location only once when transitioning to the background, after which updates stop.

Types of Location Tracking

CLLocationManager supports several tracking strategies: significant-change location, standard location tracking, and region monitoring. For background work with maximum accuracy, use allowsBackgroundLocationUpdates = true and pausesLocationUpdatesAutomatically = false.

Energy Efficiency and Accuracy

Continuous location tracking in the background is one of the most energy-intensive scenarios. iOS automatically adapts the update frequency based on movement speed: when walking, updates every 10–30 seconds; when driving, every 1–5 seconds. For navigation, use 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

The significant-change location mode works without Location Background Mode — the system wakes the app only when coordinates change significantly (typically 500 m or more). It does not require constant GPS, saving battery. Suitable for weather apps that update data when the user moves.

Bluetooth Mode (LE accessories)

Bluetooth LE Background Mode allows the app to interact with BLE devices in the background. It is used by fitness bands, medical sensors, Smart Home devices, and Beacon navigation. The mode is divided into two subtypes: bluetooth-central (the app connects to devices) and bluetooth-peripheral (the app acts as a device).

Working in Central Mode

An app acting as a Central can scan and connect to BLE devices in the background. To do this, specify bluetooth-central in Background Modes and call CBCentralManager.scanForPeripherals with the CBCentralManagerScanOptionAllowDuplicatesKey option. In the background, scanning runs at a reduced frequency — the system may delay discovery to save energy.

Working in Peripheral Mode

An app acting as a Peripheral can advertise services and respond to requests from other devices. The bluetooth-peripheral mode allows the app to remain visible to other BLE devices even in the background. It is used in HealthKit apps and IoT solutions.

Beacon and Region Monitoring

iBeacon monitoring works in the background without additional permissions — the system itself tracks entry and exit from Beacon regions. However, scanning Beacon content (proximity UUID, major, minor) requires Bluetooth permission and bluetooth-central Background Mode. Use CLLocationManager with CLBeaconRegion for monitoring.

VoIP and PushKit for Communication Apps

VoIP Background Mode is designed for voice communication apps (Skype, Zoom, WhatsApp). This mode allows the app to stay connected to the server to receive incoming calls. Starting with iOS 8, PushKit is used for VoIP — a framework that handles push notifications from the VoIP server without involving APNs.

PushKit for Incoming Calls

PushKit is the only mechanism that guarantees delivery of VoIP notifications to the device. When a PushKit notification is received, the system wakes the app, even if it was terminated. The app must establish a connection with the server within 30 seconds and display a local notification for the incoming call.

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 Usage Rules

PushKit cannot be used for regular notifications — only for VoIP, watchOS communications, and file providers. Apple verifies this during review. Improper use leads to app rejection. Starting with iOS 13, PushKit only delivers the notification — calling CXProvider (CallKit) to display the call screen is mandatory.

Fetch and Processing Modes

Background Fetch and Background Processing are modes for background content updates and long-running tasks. Fetch is for short periodic updates (up to 30 s), Processing is for long-running tasks (up to 10 min) with conditions (Wi-Fi, charging). Processing is only available on iOS 13+.

Background Fetch — Quick Updates

The Fetch mode allows the system to periodically wake the app to download fresh content. The system analyzes user behavior and selects the optimal time. The app must call the completion handler within 30 seconds. Fetch is suitable for news apps, social media feeds, and weather.

Background Processing — Long-Running Tasks

BGProcessingTask is designed for tasks that can run without user interaction: cache cleanup, large database synchronization, media file processing. The system launches the task only under favorable conditions — device charging, connected to Wi-Fi, not in Low Power Mode. Available for up to 10 minutes.

Scheduling and Requirements

For BGProcessingTask, you need to specify requiresExternalPower and requiresNetworkConnectivity. The system may defer execution indefinitely if conditions are not met. Unlike BGAppRefreshTask, which must run at least once a day, Processing may not run for weeks if the device is rarely charging.

App Store Review Guidelines for Background Modes

Apple strictly reviews the use of Background Modes during app review. The main rule: each enabled mode must be justified by the app’s functionality. If an app declares Location Mode but does not use geolocation, it will be rejected with a requirement to remove the capability.

Common Reasons for Rejection

The most common violations: Location Mode without explicit need (the app requests “Always” access for showing ads), Audio Mode without background audio playback, VoIP without PushKit, BLE Mode without Bluetooth devices. Apple may reject the app even at the update stage if the mode is no longer used.

Description in Review Notes

When submitting for review, provide specific justification for each mode in the Notes section. For example, “Location Background Mode is used to track the user’s route in the fitness feature.” Without explanation, the reviewer may reject the app. For confidential features (VoIP), Apple may request a test account.

Recommendations for Minimizing Modes

Use the minimum necessary set of modes. If your app needs background data download once an hour — do not enable Location Mode, use Fetch or BGAppRefreshTask. Extra modes not only lead to rejection but also create a negative impression: the user sees in Settings that the app uses geolocation in the background.

Frequently Asked Questions

How many Background Modes can be enabled in one app?

There is no limit on the number, but each mode must be justified by the app’s functionality. Enabling all modes without necessity is a guaranteed reason for rejection during review. A practical limit is 2–3 modes per app, otherwise the user will see many permission requests.

How to check if a Background Mode is active?

Use UIApplication.shared.applicationState — the app can check whether it is in the background (state == .background). You can also observe UIApplication.didEnterBackgroundNotification and willEnterForegroundNotification to switch behavior.

What is the difference between Audio and AirPlay Background Modes?

Audio — playing sound through the speaker or headphones. AirPlay — streaming audio and video to Apple TV and other AirPlay devices. In practice, Audio Mode covers both scenarios since AirPlay uses the audio session. A separate AirPlay mode is not required since iOS 7+.

Can I use Background Location only when the app is open?

Yes, for this use requestWhenInUseAuthorization() instead of requestAlwaysAuthorization(). The app will receive location only in the foreground. If short-term background tracking is needed, call startUpdatingLocation() and stop it in willResignActive.

How do Background Modes affect battery life?

Each mode increases power consumption. Location Mode is the most demanding, potentially reducing battery life by 30–50% with continuous tracking. Audio Mode is moderate (15–20%). Fetch and Processing are minimal (2–5%). BLE Mode is low (5–10%) thanks to Bluetooth LE energy efficiency.

Summary

  • Background Modes — declarable iOS capabilities that allow an app to legitimately execute code in the background.
  • Audio Mode — the most common, for playing music, podcasts, and video via AVAudioSession with the .playback category.
  • Location Mode — for navigation and fitness, the most energy-intensive, requires requestAlwaysAuthorization and allowsBackgroundLocationUpdates.
  • BLE Mode — working with Bluetooth devices in the background via CBCentralManager with background scanning.
  • VoIP and PushKit — for communication apps, guarantees delivery of incoming calls via PKPushRegistry.
  • Fetch and Processing — short and long-running background tasks with different execution conditions and time limits.
  • Apple strictly verifies the justification of each mode — improper use leads to app rejection from the App Store.

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also