Silent Push — bu iOS push-bildirishnomasining bir turi bo‘lib, qurilmaga hech qanday ko‘rinadigan va ovozli xabarsiz yetkaziladi. Jim bildirishnomaning asosiy vazifasi — fon ma’lumot sinxronizatsiyasi, tarkibni yangilash va foydalanuvchi e’tiborini talab qilmaydigan qisqa vazifalarni bajarishdir. Apple Developer Documentation, 2026 ma’lumotlariga ko‘ra, Silent Push kiruvchi ma’lumotlarni qayta ishlash uchun ilovani 30 soniya fon rejimida faollashtiradi, shundan so‘ng tizim batareya quvvatini tejash uchun qurilmani uyqu rejimiga qaytaradi.
Asosiy fikrlar
Silent Push (jim push bildirishnoma) — bu foydalanuvchiga hech qanday vizual bildirishnomasiz qurilmaga ma’lumot yetkazuvchi iOS mexanizmi. Standart push-dan farqli o‘laroq, u banner ko‘rsatadi, ovoz chiqaradi va Notification Center-ga tushadi, silent push ilovani fon rejimida „uyg‘otadi” va unga qayta ishlash uchun ma’lumotlarni uzatadi. Foydalanuvchi bunday bildirishnomaning yetkazilishidan hech qachon xabar topmaydi — natija keyingi ochilishda yangilangan tarkibdir.
Asosiy farq JSON yukida: silent push content-available: 1 bayrog‘ini o‘z ichiga oladi va alert, sound yoki badge ni o‘z ichiga OLMAYDI. Standart bildirishnoma alert bilan har doim foydalanuvchiga ko‘rsatiladi, content-available dan qat’iy nazar. Silent push faqat content-available: 1 bilan va alertsiz ishlaydi — agar alert qo‘shilsa, tizim hatto fon yetkazish bayrog‘i bilan ham bildirishnomani ko‘rsatadi.
Jim bildirishnomalar ma’lumotlar ilova ochilgan paytda yangi bo‘lishi kerak bo‘lgan, ammo foydalanuvchi chalg‘itilmasligi kerak bo‘lgan stsenariylarda ajralmasdir. Misollar: yangiliklar lentasini fonda yangilash, obunalarni sinxronlash, oflayn kirish uchun yangi tarkibni yuklab olish, vidjetlarni yangilash, keshni bekor qilish. Silent Push shuningdek kutilgan foydalanuvchi harakatidan oldin ilovani „istish” uchun ham ishlatiladi.
Silent Push yetkazilishi oddiy bildirishnomalardan sezilarli darajada farq qiladi va energiya iste’molini optimallashtirish qoidalariga bo‘ysunadi. iOS tizimi APNS dan push so‘rovini oladi, bu silent push (content-available: 1) ekanligini aniqlaydi va yetkazish haqida bir necha omillar asosida qaror qabul qiladi: batareya quvvati darajasi, energiya tejash rejimi, oldingi silent push-lar chastotasi, ilova faolligi va joriy CPU yuki.
Apple M chipi va iOS 15+ bo‘lgan qurilmalarda silent push fon vazifalari uchun qurilmani vaqti-vaqti bilan uyg‘otadigan Power Nap mexanizmi bilan integratsiyalanadi. Power Nap bir nechta silent push-ni bitta faollik davrida birlashtiradi, bu umumiy energiya sarfini kamaytiradi. Dasturchi Power Nap-ni bevosita boshqara olmaydi — tizim foydalanuvchi xatti-harakati va ilovadan foydalanish tarixi asosida avtomatik qaror qabul qiladi.
Tizim silent push yetkazganda, ilova AppDelegate da application(_:didReceiveRemoteNotification:fetchCompletionHandler:) chaqiruvini oladi. Dasturchi majbur 30 soniya ichida completion handler ni to‘g‘ri natija bilan (UIBackgroundFetchResult) chaqirishi kerak. Agar qayta ishlash o‘z vaqtida tugamasa, tizim ushbu ilova uchun silent push chastotasini cheklashi yoki ularni butunlay yetkazishni to‘xtatishi mumkin.
// Silent Push ni AppDelegate da qayta ishlash
func application(
_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler:
@escaping (UIBackgroundFetchResult) -> Void
) {
guard let type = userInfo["sync-type"] as? String
else {
completionHandler(.failed)
return
}
if type == "news-feed" {
NewsFeedSyncService().sync { success in
completionHandler(success ? .newData : .failed)
}
} else if type == "cache-invalidate" {
CacheManager.shared.invalidateAll()
completionHandler(.newData)
} else {
completionHandler(.noData)
}
}
Apple silent push-lar orasidagi aniq intervallarni e’lon qilmaydi, ammo testlar va hujjatlar asosida bitta qurilmaga soatiga 2–3 tadan ko‘p bo‘lmagan jim bildirishnoma yuborish tavsiya etiladi. Tez-tez yuborishda tizim silent push-larni e’tiborsiz qoldira boshlaydi va ma’lumotlar yetkazilmay qoladi. Agar tez-tez sinxronlash zarur bo‘lsa, fon konfiguratsiyasi bilan URLSession yoki VoIP push dan foydalanishni ko‘rib chiqing.
Silent Push foydalanuvchining faol ishtirokisiz ma’lumotlar yangi bo‘lishi kerak bo‘lgan keng doiradagi vazifalarda qo‘llaniladi. Ushbu mexanizmdan real iOS ilovalarida eng samarali foydalanish stsenariylarini ko‘rib chiqaylik.
Yangilik ilovalari, o‘quvchilar va sayohat ilovalari fonda yangi tarkibni yuklab olish uchun Silent Push-dan foydalanadi. Foydalanuvchi ilovani ochganda, ma’lumotlar allaqachon yuklab olingan va hatto internet bo‘lmasa ham mavjud. Bunday yondashuv foydalanuvchi tajribasini tubdan yaxshilaydi — bo‘sh yuklash ekranlari yo‘qoladi va tarkib darhol ko‘rsatiladi. Server yangi maqolalar paydo bo‘lganda silent push yuboradi, ilova esa ularni fonda oflayn o‘qish uchun yuklab oladi.
iOS WidgetKit vidjetlarni jadval bo‘yicha yangilaydi, ammo serverdagi ma’lumotlar o‘zgargandan so‘ng darhol yangilash uchun Silent Push ishlatiladi. Ilova fonda silent push-ni qayta ishlaydi, vidjetlar uchun mahalliy ma’lumotlar omborini yangilaydi va WidgetCenter orqali timeline-ni majburiy yangilaydi. Foydalanuvchi ilovani ochmasdan vidjetda dolzarb ma’lumotlarni ko‘radi — valyuta kursi, ob-havo prognozi, yetkazib berish holati.
Server muhim ma’lumotlarni yangilaganda (masalan, tarif qoidalari, premium foydalanuvchilar uchun mavjud funksiyalar ro‘yxati), Silent Push mahalliy keshni darhol bekor qilish imkonini beradi. Keyingi ochilishda ilova serverdan yangi ma’lumotlarni yuklaydi, eskirgan keshdan foydalanmaydi. Bu, ayniqsa, pulli tarkib yoki obunalarga ega ilovalar uchun dolzarbdir.
Ba‘zi stsenariylarda bildirishnoma ko‘rsatmasdan ilova belgisidagi badge-ni yangilash talab qilinadi. Yukda badge maydoni bilan Silent Push foydalanuvchini banner bilan bezovta qilmasdan hisoblagich qiymatini o‘rnatish imkonini beradi. Masalan, chat ilovasi har bir yangi xabarni bildirishnoma sifatida ko‘rsatmasdan, agar foydalanuvchi ilova ichida bo‘lsa, o‘qilmagan xabarlar soni bilan badge-ni yangilashi mumkin.
Silent Push to‘g‘ri ishlashi uchun uch darajada sozlash talab qilinadi: Xcode loyihasi, serverda JSON yuki va ilovada qayta ishlash kodi. Har bir daraja muhimdir: har qanday qadamni o‘tkazib yuborish bildirishnomaning oddiy tarzda yetkazilishiga yoki umuman yetkazilmasligiga olib keladi.
Xcode da Push Notifications imkoniyatini va Remote notifications belgilangan Background Modes-ni yoqish kerak. Push Notifications APNS uchun sertifikat yaratadi, Remote notifications esa Background Modes ichida tizimga silent push qabul qilinganda ilovani uyg‘otishga ruxsat beradi. Remote notifications bo‘lmasa, silent push yetkaziladi, ammo ilova fonda faollashmaydi va ma’lumotlar qayta ishlanmaydi.
Silent Push yuki content-available: 1 bilan aps kalitini o‘z ichiga olishi kerak va alert, sound yoki badge ni o‘z ichiga OLMAYDI. Maxsus maydonlar aps bilan bir darajada uzatiladi va qayta ishlash uchun ma’lumotlarni o‘z ichiga oladi: operatsiya turi, ob’ekt identifikatorlari, metama’lumotlar. Content-available bo‘lmagan yuk oddiy bildirishnoma sifatida qayta ishlanadi; alert bilan — content-available bo‘lsa ham, oddiy bildirishnoma sifatida.
{
"aps": {
"content-available": 1
},
"sync-type": "news-feed",
"last-article-id": "article_8521",
"priority": "high"
}
Silent push qabul qilinganda, iOS ilova ko‘rinadigan bo‘lishidan oldin application(_:didReceiveRemoteNotification:fetchCompletionHandler:) ni chaqiradi. Ushbu metodda userInfo ni tahlil qilish, kerakli ishlarni bajarish (tarmoq so‘rovlari, Core Data ga yozish, keshni yangilash) va 30 soniya ichida majburiy ravishda completionHandler ni to‘g‘ri natija bilan chaqirish kerak. CompletionHandler ni chaqirmaslik tizim tomonidan xato deb hisoblanadi va kelajakdagi silent push-lar chastotasiga ta’sir qiladi.
Silent Push muhim operatsiyalar uchun ishonchli ma’lumot yetkazish kanali emas — bu optimallashtirish mexanizmi, kafolatlangan sinxronizatsiya emas. Dasturchi cheklovlarni tushunishi va tizimni ilova ham silent push bilan, ham unsiz to‘g‘ri ishlaydigan tarzda loyihalashi kerak.
iOS har bir silent push yetkazilishiga kafolat bermaydi. Tizim batareya quvvati past bo‘lganda (20% dan past), Low Power Mode rejimida, oldingi silent push-lar chastotasi yuqori bo‘lganda, shuningdek ilova uzoq vaqt ishlatilmagan bo‘lsa yetkazishni kechiktirishi yoki bekor qilishi mumkin. O‘rtacha yetkazish statistikasi Apple ma’lumotlariga ko‘ra: silent push-larning taxminan 70–80% 5 daqiqa ichida yetkaziladi, qolganlari kechiktirilishi yoki yo‘qolishi mumkin.
Apple silent push-dan samarali foydalanish uchun bir nechta qoidalarga rioya qilishni tavsiya qiladi. Bir qurilmaga soatiga 2–3 silent push-dan ko‘p yubormang — limitni oshirish blokirovkaga olib keladi. Compact payload dan foydalaning: minimal yuk hajmi qayta ishlashni tezlashtiradi va tarmoq yukini kamaytiradi. CompletionHandler ni har doim va imkon qadar tez chaqiring: qayta ishlash qancha uzoq davom etsa, kelajakda tizim silent push-ni cheklash ehtimoli shuncha yuqori.
Kafolatlangan yetkazish yoki ko‘proq qayta ishlash vaqti talab qiladigan stsenariylar uchun alternativlarni ko‘rib chiqing. VoIP push (PushKit) yetkazishni kafolatlaydi va ko‘proq vaqt beradi, ammo faqat VoIP ilovalari uchun mo‘ljallangan. Background fetch (UIApplication background fetch) tizim tomonidan jadval bo‘yicha ishga tushiriladi, ammo server tomonidan boshlab bo‘lmaydi. WebSocket doimiy aloqani saqlaydi, ammo ko‘proq batareya sarflaydi va barcha turdagi ilovalar uchun mos emas.
Silent Push nosozliklarini tuzatish uchun Mac da Console.app dan ilova nomi bilan filtrdan foydalaning. Tizim har bir silent push-ni “fon vazifasi” belgisi bilan qayd qiladi va qayta ishlash muvaffaqiyatli bo‘lganligini ko‘rsatadi. Qurilmada tekshirish Sozlamalar → Dasturchi → Fon rejimlarini qayd etish orqali amalga oshiriladi. Server tomoni yetkazilmagan bildirishnomalarni aniqlash uchun APNS Feedback Service orqali kuzatiladi.
Tez-tez beriladigan savollar
Silent Push foydalanuvchiga ko‘rsatilmaydi, ovoz chiqarmaydi va Notification Center ga tushmaydi. Uning vazifasi — ma’lumotlarni sinxronlash uchun ilovani fon rejimida faollashtirish. Oddiy push har doim banner ko‘rsatadi va ovoz va badge o‘z ichiga olishi mumkin.
Ilova fon vazifasini bajarish uchun 30 soniya oladi. CompletionHandler chaqirilgandan so‘ng tizim qurilmani uyqu rejimiga qaytaradi. Agar completionHandler o‘z vaqtida chaqirilmasa, tizim ushbu ilovaga silent push yuborishni to‘xtatishi mumkin.
Tizim batareya quvvati past bo‘lganda, energiya tejash rejimida, tez-tez silent push yuborilganda yoki ilova uzoq vaqt ishlatilmagan bo‘lsa yetkazishni kechiktirishi mumkin. Bu iOS ning normal xatti-harakati, amalga oshirishdagi xatolar bilan bog‘liq emas.
Ha, content-available: 1 ni alert bilan birga ko‘rsatish mumkin — bu holda bildirishnoma foydalanuvchiga ko‘rsatiladi va ilova qoŕimcha fon faollashuvini oladi. Ammo agar vazifa faqat ko‘rsatishsiz fon sinxronizatsiyasi bo‘lsa, alert ko‘rsatilmasligi kerak.
Mac da Console.app dan fon vazifalari jurnallarini ko‘rish uchun foydalaning. APNS orqali test silent push yuboring va didReceiveRemoteNotification to‘g‘ri completionHandler bilan chaqirilganligini tekshiring. Xcode da fon rejimi imitatsiyasi bilan simulyatordan foydalaning.
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.