Silent Push iOS bildirişinin bir növüdür ki, heç bir göstəriş və səs müşayişati olmadan cihaza çatdırılır. Səssiz bildirişin əsas məqsədi fon məlumat sinxronizasiyası, məzmun yenilənməsi və istifadəçi diqqətini tələb etməyən qısa tapşırıqların yerinə yetirilməsidir. Apple Developer Documentation, 2026 məlumatlarına görə, Silent Push daxil olan məlumatları emal etmək üçün tətbiqi 30 saniyə fon rejimində aktivləşdirir, bundan sonra sistem batareya enerjisinə qənaət etmək üçün cihazı yuxu rejiminə qaytarır.
Əsas məqamlar
Silent Push (səssiz push bildirişi) — istifadəçiyə heç bir vizual bildiriş göstərmədən cihaza məlumat çatdıran iOS mexanizmidir. Standart push-dan fərqli olaraq, hansı ki, banner göstərir, səs çalır və Notification Center-ə düşür, silent push tətbiqi fon rejimində „oyadır” və ona emal üçün məlumat ötürür. İstifadəçi belə bir bildirişin çatdırılmasından heç vaxt xəbər tutmur — nəticə növbəti açılışda yenilənmiş məzmun olur.
Əsas fərq JSON yükündədir: silent push content-available: 1 bayrağını ehtiva edir və alert, sound və ya badge ehtiva etmir. Standart bildiriş alert ilə həmişə istifadəçiyə göstərilir, content-available-dan asılı olmayaraq. Silent push yalnız content-available: 1 ilə və alert olmadan işləyir — əgər alert əlavə edilərsə, sistem hətta fon çatdırılma bayrağı olsa belə bildirişi göstərəcək.
Səssiz bildirişlər məlumatların tətbiqin açılması anında təzə olması lazım olduğu, lakin istifadəçinin yayındırılmaması lazım olduğu ssenarilərdə əvəzolunmazdır. Nümunələr: xəbər lentinin fon rejimində yenilənməsi, abunələrin sinxronizasiyası, oflayn giriş üçün yeni məzmunun endirilməsi, vidjetlərin yenilənməsi, keşin etibarsızlaşdırılması. Silent Push həmçinin istifadəçinin gözlənilən hərəkətindən əvvəl tətbiqi „ısıtmaq” üçün də istifadə olunur.
Silent Push-un çatdırılması adi bildirişlərdən əhəmiyyətli dərəcədə fərqlənir və enerji istehlakının optimallaşdırılması qaydalarına tabedir. iOS sistemi APNS-dən push sorğu alır, bunun silent push (content-available: 1) olduğunu müəyyən edir və çoxsaylı amillər əsasında çatdırılma haqqında qərar verir: batareya yük səviyyəsi, enerji qənaət rejimi, əvvəlki silent push-ların tezliyi, tətbiqin aktivliyi və cari CPU yükü.
Apple M çipi və iOS 15+ olan cihazlarda silent push fon tapşırıqları üçün dövri olaraq cihazı oyadan Power Nap mexanizmi ilə inteqrasiya olunur. Power Nap bir neçə silent push-u bir aktivlik dövründə birləşdirir ki, bu da ümumi enerji istehlakını azaldır. Tərtibatçı Power Nap-ı birbaşə idarə edə bilməz — sistem qərarı istifadəçinin davranışı və tətbiqin istifadə tarixçəsi əsasında avtomatik qəbul edir.
Sistem silent push-u çatdırdıqda, tətbiq AppDelegate-də application(_:didReceiveRemoteNotification:fetchCompletionHandler:) çağırışını alır. Tərtibatçı məcburdur 30 saniyə ərzində completion handler-i düzgün nəticə ilə (UIBackgroundFetchResult) çağırsın. Emal vaxtında bitməzsə, sistem bu tətbiq üçün silent push tezliyini məhdudlaşdıra və ya onların çatdırılmasını tamamilə dayandıra bilər.
// AppDelegate-də Silent Push-un emalı
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 arasında dəqiq intervalları dərc etmir, lakin testlər və sənədləşdirmə əsasında bir cihaza saatda 2–3 səssiz bildirişdən çox olmayan göndərmək tövsiyə olunur. Daha tez-tez göndərmədə sistem silent push-ları görməməyə başlayır və məlumatlar çatdırılmır. Daha tez-tez sinxronizasiya tələb olunarsa, fon konfiqurasiyası ilə URLSession və ya VoIP push istifadə etməyi düşünün.
Silent Push istifadəçinin aktiv iştirakı olmadan məlumatların aktual olması lazım olduğu geniş çeşidli tapşırıqlarda tətbiq olunur. Bu mexanizmin real iOS tətbiqlərində ən təsirli istifadə ssenarilərinə baxaq.
Xəbər tətbiqləri, oxuyucular və səyahət tətbiqləri fon rejimində yeni məzmunu endirmək üçün Silent Push-dan istifadə edir. İstifadəçi tətbiqi açdıqda, məlumatlar artıq endirilib və hətta internet olmadan da əlçatandır. Bu yanaşma istifadəçi təcrübəsini köklü şəkildə yaxşılaşdırır — boş yüklənmə ekranları yox olur və məzmun dərhal göstərilir. Server yeni məqalələr göründükdə silent push göndərir, tətbiq isə fon rejimində onları oflayn oxumaq üçün endirir.
iOS WidgetKit vidjetləri cədvəl üzrə yeniləyir, lakin serverdəki məlumat dəyişikliyindən sonra dərhal yeniləmə üçün Silent Push istifadə olunur. Tətbiq fon rejimində silent push-u emal edir, vidjetlər üçün yerli məlumat anbarını yeniləyir və WidgetCenter vasitəsilə timeline-ı məcburi yeniləyir. İstifadəçi tətbiqi açmadan vidjetdə aktual məlumat görür — valyuta məzənnəsi, hava proqnozu, çatdırılma statusu.
Server kritik məlumatları yenilədikdə (məsələn, tariflɑndirmə qaydaları, premium istifadəçilər üçün mövcud funksiyaların siyahısı), Silent Push yerli keşi dərhal etibarsızlaşdırmağa imkan verir. Növbəti açılışda tətbiq serverdən təzə məlumatları yükləyəcək, köhnəlmiş keşdən istifadə etməyəcək. Bu, xüsusən ödənişli məzmun və ya abunə olan tətbiqlər üçün aktualdır.
Bəzi ssenarilərdə bildiriş göstərmədən tətbiq ikonasında badge-i yeniləmək tələb olunur. Yükdə badge sahəsi olan Silent Push istifadəçini bannerlə narahat etmədən sayıcının dəyərini təyin etməyə imkan verir. Məsələn, söhbət tətbiqi hər yeni mesajı bildiriş kimi göstərmədən, əgər istifadəçi tətbiq daxilindədirsə, oxunmamış mesajların sayı ilə badge-i yeniləyə bilər.
Silent Push-un düzgün işləməsi üçün üç səviyyədə konfiqurasiya tələb olunur: Xcode layihəsi, serverdə JSON yükü və tətbiqdə emal kodu. Hər səviyyə kritikdir: hər hansı bir addımın buraxılması bildirişin adi kimi çatdırılmasına və ya ümumiyyətlə çatdırılmamasına səbəb olur.
Xcode-da Push Notifications capability və Remote notifications qeyd olunmuş Background Modes-u aktivləşdirmək lazımdır. Push Notifications APNS üçün sertifikat yaradır, Remote notifications isə Background Modes daxilində sistemə silent push alındıqda tətbiqi oyatmağa icazə verir. Remote notifications olmadan silent push çatdırılacaq, lakin tətbiq fon rejimində aktivləşməyəcək və məlumatlar emal edilməyəcək.
Silent Push yükü content-available: 1 ilə aps açarını ehtiva etməli və alert, sound və ya badge ehtiva etməməlidir. Xüsusi sahələr aps ilə eyni səviyyədə ötürülür və emal üçün məlumatları ehtiva edir: əməliyyat növü, obyekt identifikatorları, metadatanlar. Content-available olmayan yük adi bildiriş kimi emal ediləcək; alert ilə — content-available olsa belə, adi bildiriş kimi.
{
"aps": {
"content-available": 1
},
"sync-type": "news-feed",
"last-article-id": "article_8521",
"priority": "high"
}
Silent push alındıqda iOS tətbiq görünməzdən əvvəl application(_:didReceiveRemoteNotification:fetchCompletionHandler:) çağırır. Bu metoddan userInfo-nu analiz etmək, zəruri işləri yerinə yetirmək (şəbəkə sorğuları, Core Data-ya yazı, keşin yenilənməsi) və məcburi olaraq 30 saniyə ərzində completionHandler-i düzgün nəticə ilə çağırmaq lazımdır. CompletionHandler-in çağırılmaması sistem tərəfindən səhv kimi qəbul edilir və gələcək silent push-ların tezliyinə təsir edir.
Silent Push kritik əməliyyatlar üçün etibarlı məlumat çatdırılma kanalı deyil — bu optimallaşdırma mexanizmidir, zəmanətli sinxronizasiya deyil. Tərtibatçı məhdudiyyətləri başa düşməli və sistemi elə qurmalıdır ki, tətbiq həm silent push ilə, həm də onsuz düzgün işləsin.
iOS hər silent push-un çatdırılmasına zəmanət vermir. Sistem batareya yükü aşağı olduqda (20%-ən aşağı), Low Power Mode rejimində, əvvəlki silent push-ların yüksək tezliyində, həmçinin tətbiq uzun müddət istifadə edilmədisə çatdırılmanı təxirə sala və ya ləğv edə bilər. Orta çatdırılma statistikası Apple məlumatlarına görə: silent push-ların təxminən 70–80% 5 dəqiqə ərzində çatdırılır, qalanları təxirə salına və ya itirilə bilər.
Apple silent push-un səmərəli istifadəsi üçün bir neçə qaydaya riayət etməyi tövsiyə edir. Bir cihaza saatda 2–3 silent push-dan çox göndərməyin — limitin aşılması blokada gətirib çıxarır. Compact payload istifadə edin: minimum yük ölçüsü emalı sürətləndirir və şəbəkə yükünü azaldır. CompletionHandler-i həmişə və mümkün qədər tez çağırın: emal nə qədər uzun çəkərsə, gələcəkdə sistemin silent push-u məhdudlaşdırma ehtimalı bir o qədər yüksəkdir.
Zəmanətli çatdırılma və ya emal üçün daha çox vaxt tələb olunan ssenarilərdə alternativləri nəzərdən keçirin. VoIP push (PushKit) çatdırılmaya zəmanət verir və daha çox vaxt verir, lakin yalnız VoIP tətbiqləri üçün nəzərdə tutulub. Background fetch (UIApplication background fetch) sistem tərəfindən cədvəl üzrə işə salınır, lakin server tərəfindən başladıla bilməz. WebSocket daimi əlaqə saxlayır, lakin daha çox batareya sərf edir və bütün tətbiq növləri üçün uyğun deyil.
Silent Push-un sazlanması üçün Mac-da Console.app-dan tətbiq adı ilə filtrdən istifadə edin. Sistem hər silent push-u „bəcərə tapşırığı” qeydi ilə qeydiyyata alır və emalın uğurlu olub-olmadığını göstərir. Cihazda yoxlama Parametrlər → Tərtibatçı → Fon rejimlərinin qeydiyyatı vasitəsilə aparılır. Server tərəfi çatdırılmayan bildirişləri aşkar etmək üçün APNS Feedback Service vasitəsilə izlənilir.
Tez-tez verilən suallar
Silent Push istifadəçiyə göstərilmir, səs çalmır və Notification Center-ə düşmür. Onun vəzifəsi məlumatları sinxronizasiya etmək üçün tətbiqi fon rejimində aktivləşdirməkdir. Adi push həmişə banner göstərir və səs və badge ehtiva edə bilər.
Tətbiq fon tapşırığını yerinə yetirmək üçün 30 saniyə alır. CompletionHandler çağırıldıqdan sonra sistem cihazı yuxu rejiminə qaytarır. Əgər completionHandler vaxtında çağırılmazsa, sistem bu tətbiqə silent push göndərməyi dayandıra bilər.
Sistem batareya yükü aşağı olduqda, enerji qənaət rejimində, tez-tez silent push göndəriləndə və ya tətbiq uzun müddət istifadə edilmədisə çatdırılmanı təxirə sala bilər. Bu iOS-un normal davranışıdır, tətbiq səhvləri ilə bağlı deyil.
Bəli, content-available: 1-i alert ilə birlikdə göstərmək olar — bu halda bildiriş istifadəçiyə göstəriləcək, tətbiq isə əlavə olaraq fon aktivasiyası alacaq. Amma əgər vəzifə yalnız göstərişsiz fon sinxronizasiyasıdırsa, alert göstərilməməlidir.
Mac-da Console.app istifadə edərək fon tapşırıqlarının jurnallarına baxın. APNS vasitəsilə test silent push-u göndərin və didReceiveRemoteNotification-un düzgün completionHandler ilə çağırıldığını yoxlayın. Xcode-da fon rejiminin imitasiyası ilə simulyatordan istifadə edin.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun