Background Modes у iOS — шта је то, који режими постоје и подешавање

Аутор: IT Sectr Објављено: 2026-03-27 Време читања: 9 мин

Background Modes — скуп декларисаних могућности iOS-а који омогућавају апликацији да настави извршавање кода након преласка у позадински режим. Сваки режим одговара одређеној врсти задатака: аудио, геолокација, VoIP, Bluetooth, fetch и processing. Према Apple, 2026, неправилно коришћење Background Modes је један од честих разлога одбијања апликација при ревизији у App Store-у.

Главно

  • Background Modes — скуп iOS capability за легитимно позадинско извршавање кода.
  • Аудио режим — репродукција музике, подкастова, аудиокњига у позадини са контролом преко Control Center-а.
  • Геолокација — праћење локације у позадини за навигацију и фитнес тракере.
  • Bluetooth — рад са BLE уређајима у позадини: фитнес наруквице, сензори, периферија.
  • Провера Apple-а — неправилно коришћење режима води до одбијања апликације из App Store-а.

Шта су Background Modes у iOS-у?

Background Modes — capability пројекта Xcode које декларишу намеру апликације да извршава одређене типове позадинских операција. За разлику од Android-а, где апликација може да покрене било који Service у позадини, iOS захтева експлицитно навођење режима у Info.plist-у. Сваки режим има строга правила коришћења и проверава се од стране Apple-а при ревизији.

Како раде Background Modes

Када апликација пређе у позадину, iOS је обуставља након 3–5 секунди. Ако апликација декларише Background Mode и активно користи одговарајући API (нпр. AVAudioSession за аудио), систем је пребацује у специјални режим извршавања. Апликација остаје у оперативној меморији и може да извршава код ограничен типом режима.

Потпуна листа доступних режима

iOS подржава следеће Background Modes: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) и HealthKit. Сваки режим захтева оправдање у опису апликације.

РежимКључ Info.plist-аНаменаВерзија iOS-а
AudioaudioПозадински аудио, AirPlay4.0+
LocationlocationПраћење локације4.0+
VoIPvoipVoIP push обавештења4.0+
BLEbluetooth-centralРад са BLE уређајима7.0+
FetchfetchПериодично преузимање података7.0+
ProcessingprocessingДуготрајни позадински задаци13.0+
Push to Talkpush-to-talkГласовни push-to-talk16.0+

Аудио режим (Audio, AirPlay и Picture in Picture)

Audio Background Mode — најраспрострањенији режим, који користе музички плејери, подкаст апликације и аудио сервиси. Апликација може да настави репродукцију звука, да се контролише преко Control Center-а и да се приказује на Lock Screen-у. За активацију је довољно конфигурисати AVAudioSession са категоријом .playback.

Подешавање аудио сесије

За рад аудио у позадини потребно је конфигурисати AVAudioSession и активирати је. Категорија .playback обавештава систем да апликација репродукује звук и треба да остане активна у позадини. Без ове конфигурације, звук ће се зауставити при минимизацији апликације у року од 5–10 секунди.

swift
import AVFoundation

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

Управљање репродукцијом из Control Center-а

За интеграцију са Control Center-ом и Lock Screen-ом потребно је конфигурисати MPRemoteCommandCenter. Он обрађује команде Play, Pause, Next и Previous Track. Такође је потребно ажурирати MPNowPlayingInfoProperty за приказ метаподатака: назив песме, извођач, омот и напредак репродукције.

Picture in Picture за видео

Почевши од iOS 14, Background Mode audio такође подржава Picture in Picture за видео. Апликација може да настави приказивање видеа у плутајућем прозору при минимизацији. За активацију користите AVPictureInPictureController са AVPlayerLayer-ом. Режим ради само ако апликација репродукује аудио запис.

Геолокација (Location updates)

Location Background Mode омогућава апликацији да прима ажурирања геолокације у позадини. Користи се у навигаторима, фитнес тракерима, апликацијама за доставу и друштвеним мрежама. Без овог режима, апликација добија локацију само једном при преласку у позадину, након чега ажурирања престају.

Типови праћења локације

CLLocationManager подржава неколико стратегија праћења: значајне промене (significant-change location), стандардно праћење (standard location) и праћење региона (region monitoring). За позадински рад са максималном прецизношћу користите allowsBackgroundLocationUpdates = true и pausesLocationUpdatesAutomatically = false.

Енергетска ефикасност и прецизност

Континуирано праћење локације у позадини је један од најенергетски захтевнијих сценарија. iOS аутоматски прилагођава учесталост ажурирања у зависности од брзине кретања: при ходању ажурирања сваких 10–30 секунди, при вожњи аутомобилом сваких 1–5 секунди. За навигацију користите 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 ради без Location Background Mode-а — систем буди апликацију само при значајној промени координата (обично 500 m и више). Не захтева континуирано укључивање GPS-а, што штеди батерију. Погодан за временске апликације које ажурирају податке при кретању корисника.

Bluetooth режим (LE accessories)

Bluetooth LE Background Mode омогућава апликацији да интерагује са BLE уређајима у позадини. Користе га фитнес наруквице, медицински сензори, Smart Home уређаји и Beacon навигација. Режим се дели на два подтипа: bluetooth-central (апликација се повезује са уређајима) и bluetooth-peripheral (апликација наступа као уређај).

Рад у Central режиму

Апликација у улози Central може да скенира и повезује BLE уређаје у позадини. За то је потребно навести bluetooth-central у Background Modes-у и позвати CBCentralManager.scanForPeripherals са опцијом CBCentralManagerScanOptionAllowDuplicatesKey. У позадини скенирање ради са смањеном учесталошћу — систем може да одложи откривање ради уштеде енергије.

Рад у Peripheral режиму

Апликација у улози Peripheral може да рекламира услуге и одговара на захтеве других уређаја. Режим bluetooth-peripheral омогућава апликацији да остане видљива за друге BLE уређаје чак и у позадини. Користи се у HealthKit апликацијама и IoT решењима.

Beacon и Region Monitoring

Праћење iBeacon-а ради у позадини без додатних дозвола — систем сам бележи улазак и излазак из Beacon региона. Али за скенирање садржаја Beacon-а (proximity UUID, major, minor) потребна је Bluetooth дозвола и bluetooth-central Background Mode. Користите CLLocationManager са CLBeaconRegion за праћење.

VoIP и PushKit за комуникационе апликације

VoIP Background Mode је намењен апликацијама за гласовну комуникацију (Skype, Zoom, WhatsApp). Режим омогућава апликацији да остане повезана са сервером за пријем долазних позива. Почевши од iOS 8, за VoIP се користи PushKit — фрејмворк који обрађује Push обавештења од VoIP сервера без учешћа APNs-а.

PushKit за долазне позиве

PushKit је једини механизам који гарантује доставу VoIP обавештења на уређај. При пријему PushKit обавештења, систем буди апликацију, чак и ако је била завршена. Апликација мора у року од 30 секунди да успостави везу са сервером и прикаже локално обавештење о долазном позиву.

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-а

PushKit се не може користити за обична обавештења — само за VoIP, watchOS комуникације и провајдере датотека. Apple ово проверава при ревизији. При неправилном коришћењу апликација се одбија. Почевши од iOS 13, PushKit само доставља обавештење — позивање CXProvider-а (CallKit) за приказ екрана позива је обавезно.

Fetch и Processing режими

Background Fetch и Background Processing — режими за позадинско ажурирање садржаја и извршавање дуготрајних задатака. Fetch — кратка периодична ажурирања (до 30 с), Processing — дуготрајни задаци (до 10 мин) са условима (Wi-Fi, пуњење). Processing је доступан само од iOS 13+.

Background Fetch — брзо ажурирање

Режим Fetch омогућава систему да периодично буди апликацију за преузимање свежег садржаја. Систем анализира понашање корисника и бира оптимално време. Апликација мора да позове completion handler у року од 30 секунди. Fetch је погодан за новинске апликације, фејдове друштвених мрежа и временске прогнозе.

Background Processing — дуготрајни задаци

BGProcessingTask је намењена задацима који се могу извршавати без учешћа корисника: чишћење кеша, синхронизација велике базе података, обрада медијских датотека. Систем покреће задатак само под повољним условима — уређај на пуњачу, повезан на Wi-Fi, није у Low Power режиму. Доступно до 10 минута.

Планирање и захтеви

За BGProcessingTask потребно је навести requiresExternalPower и requiresNetworkConnectivity. Систем може да одложи извршавање на неодређено време ако услови нису испуњени. За разлику од BGAppRefreshTask, који мора да се изврши барем једном дневно, Processing можда неће бити извршен недељама ако се уређај ретко пуни.

App Store Review Guidelines за Background Modes

Apple строго проверава коришћење Background Modes при ревизији апликација. Основно правило: сваки укључени режим мора бити оправдан функционалношћу апликације. Ако апликација декларише Location Mode, али не користи геолокацију, биће одбијена са захтевом да уклони capability.

Чести разлози одбијања

Најчешћи прекршаји: Location Mode без очигледне потребе (апликација захтева приступ „Always" за приказивање реклама), Audio Mode без репродукције звука у позадини, VoIP без PushKit-а, BLE Mode без Bluetooth уређаја. Apple може да одбије апликацију чак и у фази ажурирања ако режим више није у употреби.

Опис у ревизији

При слању на ревизију наведите у Notes конкретно оправдање сваког режима. На пример, „Location Background Mode се користи за праћење руте корисника у фитнес функцији". Без објашњења, рецензент може да одбије апликацију. За поверљиве функције (VoIP), Apple може да затражи тест налог.

Препоруке за минимизацију режима

Користите минимално потребан скуп режима. Ако апликацији треба позадинско преузимање података једном на сат — не укључујте Location Mode, користите Fetch или BGAppRefreshTask. Вишак режима не само да води до одбијања, већ ствара и негативан утисак: корисник види у подешавањима да апликација користи геолокацију у позадини.

Често постављана питања

Колико Background Modes се може укључити у једној апликацији?

Нема ограничења броја, али сваки режим мора бити оправдан функционалношћу апликације. Укључивање свих режима без потребе — гарантовани разлог одбијања при ревизији. Практично ограничење је 2–3 режима по апликацији, иначе ће корисник видети бројне захтеве за дозволе.

Како проверити да ли је Background Mode активан?

Користите UIApplication.shared.applicationState — апликација може да провери да ли се налази у позадини (state == .background). Такође можете пратити обавештења UIApplication.didEnterBackgroundNotification и willEnterForegroundNotification за пребацивање понашања.

Која је разлика између Audio и AirPlay Background Modes?

Audio — репродукција звука преко звучника или слушалица. AirPlay — пренос звука и видеа на Apple TV и друге AirPlay уређаје. У пракси, Audio Mode покрива оба сценарија, јер AirPlay користи аудио сесију. Засебан AirPlay режим није потребан од iOS 7+.

Може ли се Background Location користити само док је апликација отворена?

Да, за то користите requestWhenInUseAuthorization() уместо requestAlwaysAuthorization(). Апликација ће добијати локацију само у предњем плану. Ако је потребно краткотрајно праћење у позадини — позовите startUpdatingLocation() и зауставите у willResignActive.

Како Background Modes утичу на батерију?

Сваки режим повећава потрошњу енергије. Location Mode — најскупљи, може скратити време рада за 30–50% при континуираном праћењу. Audio Mode — умерен (15–20%). Fetch и Processing — минимални (2–5%). BLE Mode — низак (5–10%) захваљујући енергетској ефикасности Bluetooth LE-а.

Резиме

  • Background Modes — декларисане iOS capabilities које омогућавају апликацији легитимно извршавање кода у позадини.
  • Audio Mode — најраспрострањенији, за репродукцију музике, подкастова и видеа преко AVAudioSession са категоријом .playback.
  • Location Mode — за навигацију и фитнес, најенергетски захтевнији, захтева requestAlwaysAuthorization и allowsBackgroundLocationUpdates.
  • BLE Mode — рад са Bluetooth уређајима у позадини преко CBCentralManager-а са позадинским скенирањем.
  • VoIP и PushKit — за комуникационе апликације, гарантује доставу долазних позива преко PKPushRegistry-ја.
  • Fetch и Processing — кратки и дуготрајни позадински задаци са различитим условима извршавања и временским ограничењима.
  • Apple строго проверава оправданост сваког режима — неправилно коришћење води до одбијања апликације из App Store-а.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође