Background Modes — iOS-ning e'lon qilinadigan imkoniyatlari to'plami bo'lib, dasturga fon rejimiga o'tgandan keyin kod bajarilishini davom ettirishga imkon beradi. Har bir rejim ma'lum bir vazifa turiga mos keladi: audio, geolokatsiya, VoIP, Bluetooth, fetch va processing. Apple, 2026 ma'lumotlariga ko'ra, Background Modes-dan noto'g'ri foydalanish App Store-da ko'rib chiqishda dasturlarni rad etishning keng tarqalgan sabablaridan biridir.
Asosiy ma'lumotlar
Background Modes — Xcode loyihasining capability-lari bo'lib, dasturning fonda ma'lum turdagi operatsiyalarni bajarish niyatini e'lon qiladi. Android-dan farqli o'laroq, bu yerda dastur fonda istalgan Service-ni ishga tushirishi mumkin, iOS Info.plist-da rejimni aniq ko'rsatishni talab qiladi. Har bir rejim qat'iy foydalanish qoidalariga ega va Apple tomonidan ko'rib chiqishda tekshiriladi.
Dastur fon rejimiga o'tganda, iOS uni 3–5 soniyadan so'ng to'xtatib qo'yadi. Agar dastur Background Mode-ni e'lon qilgan bo'lsa va tegishli API-dan (masalan, audio uchun AVAudioSession) faol foydalansa, tizim uni maxsus bajarish rejimiga o'tkazadi. Dastur qoladi operativ xotirada va rejim turi bilan cheklangan kodni bajarishi mumkin.
iOS quyidagi Background Modes-larni qo'llab-quvvatlaydi: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) va HealthKit. Har bir rejim dastur tavsifida asoslashni talab qiladi.
| Rejim | Info.plist kaliti | Maqsad | iOS versiyasi |
|---|---|---|---|
| Audio | audio | Fonda audio, AirPlay | 4.0+ |
| Location | location | Joylashuvni kuzatish | 4.0+ |
| VoIP | voip | VoIP push bildirishnomalari | 4.0+ |
| BLE | bluetooth-central | BLE qurilmalari bilan ishlash | 7.0+ |
| Fetch | fetch | Davriy ma'lumot yuklash | 7.0+ |
| Processing | processing | Uzoq muddatli fon vazifalari | 13.0+ |
| Push to Talk | push-to-talk | Ovozli push-to-talk | 16.0+ |
Audio Background Mode — eng keng tarqalgan rejim bo'lib, musiqiy pleerlar, podkast dasturlari va audio xizmatlari tomonidan qo'llaniladi. Dastur ovozni ijro etishni davom ettirishi, Control Center orqali boshqarilishi va Lock Screen-da ko'rsatilishi mumkin. Faollashtirish uchun .playback toifasi bilan AVAudioSession-ni sozlash kifoya.
Fonda audio ishlashi uchun AVAudioSession-ni sozlash va faollashtirish kerak. .playback toifasi tizimga dastur ovoz ijro etayotganini va fonda faol qolishi kerakligini bildiradi. Bu sozlashsiz ovoz dastur minimallashtirilgandan keyin 5–10 soniya ichida to'xtaydi.
import AVFoundation
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(
.playback,
mode: .default,
options: []
)
try session.setActive(true)
} catch {
print("Audio sessiyasi xatosi: \(error)")
}
}
Control Center va Lock Screen bilan integratsiya uchun MPRemoteCommandCenter-ni sozlash kerak. U Play, Pause, Next va Previous Track buyruqlarini qayta ishlaydi. Shuningdek, MPNowPlayingInfoProperty-ni yangilash kerak: qo'shiq nomi, ijrochi, muqova va ijro jarayoni.
iOS 14 dan boshlab, audio Background Mode video uchun Picture in Picture-ni ham qo'llab-quvvatlaydi. Dastur minimallashtirilganda videoni suzuvchi oynada ko'rsatishni davom ettirishi mumkin. Faollashtirish uchun AVPlayerLayer bilan AVPictureInPictureController-dan foydalaning. Rejim faqat dastur audio trekni ijro etganda ishlaydi.
Location Background Mode dasturga fonda geolokatsiya yangilanishlarini olish imkonini beradi. Navigatorlarda, fitnes kuzatuvchilarida, yetkazib berish dasturlarida va ijtimoiy tarmoqlarda qo'llaniladi. Bu rejimsiz dastur faqat bir marta fonda o'tishda joylashuvni oladi, keyin yangilanishlar to'xtaydi.
CLLocationManager bir nechta kuzatish strategiyalarini qo'llab-quvvatlaydi: muhim o'zgarishlar (significant-change location), standart kuzatish (standard location) va hudud kuzatuvi (region monitoring). Maksimal aniqlik bilan fonda ishlash uchun allowsBackgroundLocationUpdates = true va pausesLocationUpdatesAutomatically = false dan foydalaning.
Fonda joylashuvni uzluksiz kuzatish eng energiya talab qiladigan stsenariylardan biridir. iOS avtomatik ravishda yangilanish chastotasini harakat tezligiga moslashtiradi: piyoda yurganda har 10–30 soniyada, mashinada har 1–5 soniyada. Navigatsiya uchun desiredAccuracy = kCLLocationAccuracyBestForNavigation dan foydalaning.
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()
Significant-change location rejimi Location Background Mode-siz ishlaydi — tizim dasturni faqat koordinatalarning muhim o'zgarishida (odatda 500 m va undan ko'p) uyg'otadi. GPS-ni doimiy yoqishni talab qilmaydi, bu batareyani tejaydi. Foydalanuvchi harakatlanganda ma'lumotlarni yangilaydigan ob-havo dasturlari uchun mos keladi.
Bluetooth LE Background Mode dasturga fonda BLE qurilmalari bilan o'zaro aloqa qilish imkonini beradi. Fitnes bilaguzuklar, tibbiy sensorlar, Smart Home qurilmalari va Beacon navigatsiyasi tomonidan qo'llaniladi. Rejim ikki kichik turga bo'linadi: bluetooth-central (dastur qurilmalarga ulanadi) va bluetooth-peripheral (dastur qurilma sifatida ishlaydi).
Central rolidagi dastur fonda BLE qurilmalarini skanerlashi va ularga ulanishi mumkin. Buning uchun Background Modes-da bluetooth-central ko'rsatilishi va CBCentralManager.scanForPeripherals CBCentralManagerScanOptionAllowDuplicatesKey opsiyasi bilan chaqirilishi kerak. Fonda skanerlash past chastotada ishlaydi — tizim energiyani tejash uchun aniqlashni kechiktirishi mumkin.
Peripheral rolidagi dastur xizmatlarni reklama qilishi va boshqa qurilmalarning so'rovlariga javob berishi mumkin. Bluetooth-peripheral rejimi dasturga hatto fonda ham boshqa BLE qurilmalari uchun ko'rinadigan bo'lib qolish imkonini beradi. HealthKit dasturlari va IoT yechimlarida qo'llaniladi.
iBeacon monitoringi qo'shimcha ruxsatlarsiz fonda ishlaydi — tizim o'zi Beacon hududiga kirish va chiqishni kuzatadi. Ammo Beacon tarkibini skanerlash (proximity UUID, major, minor) uchun Bluetooth ruxsati va bluetooth-central Background Mode talab qilinadi. Monitoring uchun CLBeaconRegion bilan CLLocationManager-dan foydalaning.
VoIP Background Mode ovozli aloqa dasturlari (Skype, Zoom, WhatsApp) uchun mo'ljallangan. Rejim dasturga kiruvchi qo'ng'iroqlarni qabul qilish uchun serverga ulangan holda qolish imkonini beradi. iOS 8 dan boshlab, VoIP uchun PushKit ishlatiladi — APNs ishtirokisiz VoIP serveridan Push bildirishnomalarini qayta ishlaydigan freymvork.
PushKit qurilmaga VoIP bildirishnomasini yetkazib berishni kafolatlaydigan yagona mexanizmdir. PushKit bildirishnomasi olingandan so'ng, tizim dasturni uyg'otadi, hatto dastur tugatilgan bo'lsa ham. Dastur 30 soniya ichida serverga ulanishi va kiruvchi qo'ng'iroq haqida mahalliy bildirishnoma ko'rsatishi kerak.
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 oddiy bildirishnomalar uchun ishlatilmaydi — faqat VoIP, watchOS aloqasi va fayl provayderlari uchun. Apple buni tekshiradi ko'rib chiqishda. Asossiz foydalanishda dastur rad etiladi. iOS 13 dan boshlab, PushKit faqat bildirishnomani yetkazadi — qo'ng'iroq ekranini ko'rsatish uchun CXProvider (CallKit) chaqiruvi majburiydir.
Background Fetch va Background Processing — fonda tarkibni yangilash va uzoq muddatli vazifalarni bajarish uchun rejimlar. Fetch — qisqa davriy yangilanishlar (30 s gacha), Processing — shartlar bilan (Wi-Fi, zaryad) uzoq muddatli vazifalar (10 daqiqagacha). Processing faqat iOS 13+ dan boshlab mavjud.
Fetch rejimi tizimga davriy ravishda dasturni yangi tarkibni yuklash uchun uyg'otish imkonini beradi. Tizim foydalanuvchi xatti-harakatlarini tahlil qiladi va optimal vaqtni tanlaydi. Dastur 30 soniya ichida completion handler-ni chaqirishi kerak. Fetch yangiliklar dasturlari, ijtimoiy tarmoq lentasi va ob-havo uchun mos keladi.
BGProcessingTask foydalanuvchi ishtirokisiz bajarilishi mumkin bo'lgan vazifalar uchun mo'ljallangan: keshni tozalash, katta ma'lumotlar bazasini sinxronlash, media fayllarni qayta ishlash. Tizim vazifani faqat qulay sharoitlarda ishga tushiradi — qurilma zaryadlanayotgan, Wi-Fi-ga ulangan, Low Power rejimida emas. 10 daqiqagacha mavjud.
BGProcessingTask uchun requiresExternalPower va requiresNetworkConnectivity ko'rsatilishi kerak. Tizim shartlar bajarilmasa, bajarilishni noma'lum muddatga kechiktirishi mumkin. Kuniga kamida bir marta bajarilishi kerak bo'lgan BGAppRefreshTask-dan farqli o'laroq, Processing qurilma kamdan-kam zaryadlansa, haftalar davomida bajarilmasligi mumkin.
Apple dasturlarni ko'rib chiqishda Background Modes dan foydalanishni qat'iy tekshiradi. Asosiy qoida: har bir yoqilgan rejim dastur funksionalligi bilan asoslanishi kerak. Agar dastur Location Mode-ni e'lon qilsa, lekin geolokatsiyadan foydalanmasa, capability-ni olib tashlash talabi bilan rad etiladi.
Eng keng tarqalgan buzilishlar: Location Mode aniq ehtiyojsiz (dastur reklama ko'rsatish uchun “Always” kirishini so'raydi), fonda ovoz ijro etmasdan Audio Mode, PushKit-siz VoIP, Bluetooth qurilmalarisiz BLE Mode. Apple dasturni hatto yangilash bosqichida ham rad etishi mumkin, agar rejim endi ishlatilmasa.
Ko'rib chiqishga yuborishda Notes-da har bir rejimning aniq asoslanishini ko'rsating. Masalan, “Location Background Mode fitnes funksiyasida foydalanuvchi marshrutini kuzatish uchun ishlatiladi”. Tushuntirishsiz ko'rib chiqar dasturni rad etishi mumkin. Maxfiy funksiyalar (VoIP) uchun Apple test hisobini so'rashi mumkin.
Minimal zarur rejimlar to'plamidan foydalaning. Agar dasturga soatiga bir marta fonda ma'lumot yuklash kerak bo'lsa — Location Mode-ni yoqmang, Fetch yoki BGAppRefreshTask-dan foydalaning. Ortiqcha rejimlar nafaqat rad etishga olib keladi, balki salbiy taassurot qoldiradi: foydalanuvchi sozlamalarda dastur fonda geolokatsiyadan foydalanayotganini ko'radi.
Tez-tez so'raladigan savollar
Soni bo'yicha cheklov yo'q, lekin har bir rejim dastur funksionalligi bilan asoslanishi kerak. Barcha rejimlarni keraksiz yoqish — ko'rib chiqishda rad etishning kafolatlangan sababi. Amaliy cheklov — dastur uchun 2–3 rejim, aks holda foydalanuvchi ko'plab ruxsat so'rovlarini ko'radi.
UIApplication.shared.applicationState dan foydalaning — dastur fonda ekanligini tekshirishi mumkin (state == .background). Shuningdek, xatti-harakatni o'zgartirish uchun UIApplication.didEnterBackgroundNotification va willEnterForegroundNotification bildirishnomalarini kuzatish mumkin.
Audio — dinamik yoki eshitish vositalari orqali ovoz ijro etish. AirPlay — audio va videoni Apple TV va boshqa AirPlay qurilmalariga uzatish. Amalda Audio Mode ikkala stsenariyni qamrab oladi, chunki AirPlay audio sessiyasidan foydalanadi. iOS 7+ dan boshlab alohida AirPlay rejimi talab qilinmaydi.
Ha, buning uchun requestAlwaysAuthorization o'rniga requestWhenInUseAuthorization() dan foydalaning. Dastur faqat oldingi planda joylashuv oladi. Agar fonda qisqa muddatli kuzatish kerak bo'lsa — startUpdatingLocation() ni chaqiring va willResignActive da to'xtating.
Har bir rejim energiya sarfini oshiradi. Location Mode — eng qimmat, uzluksiz kuzatishda ish vaqtini 30–50% qisqartirishi mumkin. Audio Mode — o'rtacha (15–20%). Fetch va Processing — minimal (2–5%). BLE Mode — past (5–10%) Bluetooth LE ning energiya samaradorligi tufayli.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.
Shuningdek o'qing