Silent Push — özü, arka plan görevleri ve teslimat yapılandırması

Yazar: IT Sectr Yayınlanma: 2026-03-20 Okuma süresi: 9 dk

Silent Push, kullanıcıya herhangi bir görüntüleme ve ses eşliği olmadan cihaza teslim edilen bir iOS push bildirimi türüdür. Sessiz bir bildirimin temel amacı, arka plan veri senkronizasyonu, içerik güncellemesi ve kullanıcının dikkatini gerektirmeyen kısa görevleri gerçekleştirmektir. Apple Developer Documentation, 2026'ya göre, Silent Push, gelen verileri işlemek için uygulamayı arka planda 30 saniye boyunca etkinleştirir, ardından sistem pil tasarrufu için cihazı uyku moduna döndürür.

Önemli noktalar

  • Arka plan etkinleştirmesi — Silent Push, kullanıcı müdahalesi olmadan verileri işlemek için uygulamayı arka planda 30 saniye boyunca uyandırır.
  • content-available anahtarı — APNS yükünde değeri 1 olan ve sessiz bildirimi normal bildirimden ayıran zorunlu bir işaret.
  • Pil tasarrufu — sistem silent push teslimatını optimize eder: pil zayıf olduğunda veya güç tasarrufu modundayken teslimat gecikebilir veya iptal edilebilir.
  • Sıklık sınırlamaları — iOS, özellikle yüksek sıklıkta gönderildiğinde veya uygulama arka plandayken her silent push'un teslimatını garanti etmez.
  • Kullanıcı arayüzü yok — sessiz bildirim Bildirim Merkezi'nde görüntülenmez, ses çalmaz ve uygulama simgesindeki rozeti artırmaz.

Silent Push Nedir — özü ve amacı

Silent Push, kullanıcıya herhangi bir görsel bildirim olmadan cihaza veri teslim eden bir iOS mekanizmasıdır. Bir banner gösteren, ses çalan ve Bildirim Merkezi'nde görünen standart bir push'un aksine, silent push uygulamayı arka planda “uyandırır” ve işlemesi için veri iletir. Kullanıcı böyle bir bildirimin teslimatını asla bilmez — sonuç, uygulamayı bir sonraki açışında güncellenmiş içeriktir.

Normal push bildirimlerinden farkı

Temel fark JSON yükündedir: bir silent push, content-available: 1 işareti içerir ve alert, sound veya badge içermez. Standart bir bildirim, alert ile birlikte content-available'dan bağımsız olarak her zaman kullanıcıya gösterilir. Silent push yalnızca content-available: 1 ile ve alert olmadan çalışır — alert eklerseniz, sistem arka plan teslimat işareti olsa bile bildirimi gösterecektir.

Silent Push ne zaman kullanılmalı

Sessiz bildirimler, kullanıcı uygulamayı açtığında verilerin güncel olması gereken ancak kullanıcının dikkatinin dağıtılmaması gereken senaryolar için vazgeçilmezdir. Örnekler: haber akışını arka planda güncelleme, abonelikleri senkronize etme, çevrimdışı erişim için yeni içerik indirme, widget'ları güncelleme, önbelleği geçersiz kılma. Silent Push ayrıca beklenen bir kullanıcı eyleminden önce uygulamayı “ısıtmak” için de kullanılır.

Sessiz bildirim teslimatı nasıl çalışır

Silent Push teslimatı, normal bildirimlerden önemli ölçüde farklıdır ve güç optimizasyonu kurallarına uyar. iOS sistemi, APNS'den push isteğini alır, bunun bir silent push (content-available: 1) olduğunu belirler ve birden çok faktöre göre teslim edilip edilmeyeceğine karar verir: pil seviyesi, güç tasarrufu modu, önceki silent push'ların sıklığı, uygulama etkinliği ve mevcut CPU yükü.

Power Nap ve arka plan modlarının rolü

Apple M çipli ve iOS 15+ cihazlarda, silent push, arka plan görevleri için cihazı periyodik olarak uyandıran Power Nap mekanizmasıyla entegre olur. Power Nap, birden çok silent push'u tek bir etkinlik döneminde birleştirerek genel güç tüketimini azaltır. Geliştirici Power Nap'ı doğrudan kontrol edemez — sistem, kullanıcı davranışı ve uygulama kullanım geçmişine göre otomatik olarak kararlar alır.

30 saniyelik işleme penceresi

Sistem bir silent push teslim ettiğinde, uygulama AppDelegate'de application(_:didReceiveRemoteNotification:fetchCompletionHandler:) çağrısını alır. Geliştirici, 30 saniye içinde completion handler'ı çağırmalı ve doğru sonucu (UIBackgroundFetchResult) iletmelidir. İşleme zamanında tamamlanmazsa, sistem bu uygulama için silent push sıklığını sınırlayabilir veya tamamen teslimatı durdurabilir.

swift
// AppDelegate'de Silent Push işleme
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)
    }
}

Teslimatlar arasındaki aralıklar

Apple, silent push'lar arasındaki kesin aralıkları yayımlamaz, ancak testlere ve belgelere dayanarak, cihaz başına saatte 2–3 sessiz bildirimden fazla gönderilmemesi önerilir. Daha sık gönderildiğinde, sistem silent push'ları görmezden gelmeye başlar ve veriler teslim edilmez. Daha sık senkronizasyon gerekiyorsa, arka plan yapılandırmasıyla URLSession veya VoIP push kullanmayı düşünün.

Silent Push kullanım durumları

Silent Push, kullanıcının aktif katılımı olmadan verilerin güncel olması gereken geniş bir görev yelpazesinde kullanılır. Bu mekanizmanın gerçek iOS uygulamalarındaki en etkili kullanım durumlarına bakalım.

Çevrimdışı erişim için içerik güncellemesi

Haber uygulamaları, okuyucular ve seyahat uygulamaları, arka planda yeni içerik indirmek için Silent Push kullanır. Kullanıcı uygulamayı açtığında, veriler zaten yüklenmiştir ve internet bağlantısı olmadan bile kullanılabilir. Bu yaklaşım, kullanıcı deneyimini önemli ölçüde iyileştirir — boş yükleme ekranları kaybolur ve içerik anında görüntülenir. Yeni makaleler geldiğinde sunucu bir silent push gönderir ve uygulama bunları çevrimdışı okuma için arka planda indirir.

Widget durumu senkronizasyonu

iOS WidgetKit, widget'ları bir programa göre günceller, ancak sunucu tarafındaki veri değişikliklerinden sonra anlık güncellemeler için Silent Push kullanılır. Arka plandaki uygulama silent push'u işler, widget'lar için yerel veri deposunu günceller ve WidgetCenter aracılığıyla zaman çizelgesini zorla yeniler. Kullanıcı, uygulamayı açmadan widget'ta güncel bilgileri görür — döviz kurları, hava durumu tahmini, teslimat durumu.

Önbelleği geçersiz kılma ve eski verileri temizleme

Sunucu kritik verileri güncellediğinde (örneğin, fiyatlandırma kuralları, premium kullanıcılar için kullanılabilir özellikler), Silent Push yerel önbelleği anında geçersiz kılmayı sağlar. Bir sonraki açılışta, uygulama eski önbelleği kullanmak yerine sunucudan yeni verileri yükleyecektir. Bu, özellikle ücretli içerik veya abonelikleri olan uygulamalar için önemlidir.

Görünür bildirim olmadan rozet güncellemesi

Bazı senaryolarda, uygulama simgesindeki rozetin bir bildirim göstermeden güncellenmesi gerekir. Yükte rozet alanı olan bir Silent Push, kullanıcıyı bir banner ile rahatsız etmeden istenen sayaç değerini ayarlamaya olanak tanır. Örneğin, bir sohbet uygulaması, kullanıcı zaten uygulamadaysa her yeni mesajı bildirim olarak göstermeden okunmamış mesaj sayısıyla rozeti güncelleyebilir.

Silent Push yapılandırması: yük ve yetenekler

Silent Push'un doğru çalışması için üç düzeyde yapılandırma gerekir: Xcode projesi, sunucudaki JSON yükü ve uygulamadaki işleme kodu. Her düzey kritiktir: herhangi bir adımı atlamak, bildirimin normal olarak teslim edilmesine veya hiç teslim edilmemesine neden olur.

Xcode'da yetenekleri yapılandırma

Xcode'da, Push Notifications yeteneğini ve Remote notifications onay kutusu işaretli Background Modes'u etkinleştirmeniz gerekir. Push Notifications, APNS için bir sertifika oluştururken, Background Modes'daki Remote notifications, silent push alındığında sistemin uygulamayı uyandırmasına izin verir. Remote notifications olmadan, silent push teslim edilir ancak uygulama arka planda etkinleştirilmez ve veriler işlenmez.

JSON yükü yapısı

Bir Silent Push yükü, content-available: 1 ile aps anahtarını içermeli ve alert, sound veya badge içermemelidir. Özel alanlar, aps ile aynı düzeyde iletilir ve işleme için veri içerir: işlem türü, nesne tanımlayıcıları, meta veriler. content-available olmayan bir yük, normal bildirim olarak işlenir; alert ile, content-available olsa bile normal olur.

json
{
    "aps": {
        "content-available": 1
    },
    "sync-type": "news-feed",
    "last-article-id": "article_8521",
    "priority": "high"
}

İstemci tarafı işleme

Bir silent push alındığında, iOS uygulama görünür hale gelmeden önce application(_:didReceiveRemoteNotification:fetchCompletionHandler:) çağrısını yapar. Bu yöntemde, userInfo'yı analiz etmeniz, gerekli işi yapmanız (ağ istekleri, Core Data yazmaları, önbellek güncellemeleri) ve 30 saniye içinde doğru sonuçla completionHandler'ı çağırmanız gerekir. CompletionHandler'ı çağırmamak, sistem tarafından bir hata olarak kabul edilir ve gelecekteki silent push'ların sıklığını etkiler.

Sınırlamalar ve en iyi uygulamalar

Silent Push, kritik işlemler için güvenilir bir veri teslimat kanalı değildir — bu bir optimizasyon mekanizmasıdır, garantili senkronizasyon değildir. Geliştirici sınırlamaları anlamalı ve sistemi, uygulamanın silent push ile ve silent push olmadan doğru çalışacağı şekilde tasarlamalıdır.

Teslimat sınırlamaları

iOS, her silent push'un teslimatını garanti etmez. Sistem, pil zayıf olduğunda (%20'nin altında), düşük güç modundayken, sık silent push'lardan sonra veya uygulama uzun süre kullanılmadıysa teslimatı geciktirebilir veya iptal edebilir. Apple'a göre ortalama teslimat istatistikleri: silent push'ların yaklaşık %70–80'i 5 dakika içinde teslim edilir, geri kalanı gecikebilir veya kaybolabilir.

Apple'ın Silent Push önerileri

Apple, etkili silent push kullanımı için birkaç kuralı izlemeyi önerir. Cihaz başına saatte 2–3'ten fazla silent push göndermeyin — limiti aşmak engellemeye neden olur. Kompakt bir yük kullanın: minimum yük boyutu işlemeyi hızlandırır ve ağ yükünü azaltır. CompletionHandler'ı her zaman mümkün olduğunca çabuk çağırın: işleme ne kadar uzun sürerse, sistemin gelecekte silent push'ları kısıtlama olasılığı o kadar yüksek olur.

Silent Push alternatifleri

Garantili teslimat veya daha fazla işleme süresi gerektiren senaryolar için alternatifleri değerlendirin. VoIP push (PushKit) teslimatı garanti eder ve daha fazla süre verir, ancak yalnızca VoIP uygulamaları içindir. Background fetch (UIApplication background fetch) sistem tarafından bir programa göre başlatılır, ancak sunucu tarafından başlatılamaz. WebSocket kalıcı bir bağlantıyı sürdürür ancak daha fazla pil tüketir ve tüm uygulama türleri için uygun değildir.

İzleme ve hata ayıklama

Silent Push'ta hata ayıklamak için Mac'te Console.app'i kullanın ve uygulama adına göre filtreleyin. Sistem her silent push'u “background task” etiketiyle kaydeder ve işlemenin başarılı olup olmadığını belirtir. Bir cihazda, Ayarlar → Geliştirici → Background Modes Logging üzerinden kontrol edin. Sunucu tarafı izleme, teslim edilmeyen bildirimleri belirlemek için APNS Feedback Service aracılığıyla yapılır.

Sıkça sorulan sorular

Silent Push normal bir push bildiriminden nasıl farklıdır?

Silent Push kullanıcıya görüntülenmez, ses çalmaz ve Bildirim Merkezi'nde görünmez. Amacı, veri senkronizasyonu için uygulamayı arka planda etkinleştirmektir. Normal bir push her zaman bir banner gösterir ve ses ve rozet içerebilir.

Silent Push'u işlemek için ne kadar süre verilir?

Uygulama, arka plan görevini tamamlamak için 30 saniye alır. CompletionHandler çağrıldıktan sonra sistem cihazı uyku moduna döndürür. CompletionHandler zamanında çağrılmazsa, sistem bu uygulamaya silent push teslimatını durdurabilir.

Silent Push neden cihaza ulaşmayabilir?

Sistem, pil zayıf olduğunda, güç tasarrufu modundayken, sık silent push gönderiminden sonra veya uygulama uzun süre kullanılmadıysa teslimatı geciktirebilir. Bu normal iOS davranışıdır, uygulama hatalarıyla ilgili değildir.

Silent Push normal bir bildirimle birlikte gönderilebilir mi?

Evet, alert ile birlikte content-available: 1 ekleyebilirsiniz — bu durumda bildirim kullanıcıya gösterilir ve uygulama ek olarak arka plan etkinleştirmesi alır. Ama görev yalnızca gösterim olmadan arka plan senkronizasyonuysa, alert eklenemez.

Silent Push'un doğru işlendiğini nasıl kontrol edebilirim?

Mac'te Console.app kullanarak arka plan görev günlüklerini görüntüleyin. APNS üzerinden bir test silent push'u gönderin ve didReceiveRemoteNotification'ın doğru completionHandler ile çağrıldığını kontrol edin. Xcode'da, arka plan modu simülasyonu ile simülatörü kullanın.

Özet

  • Silent Push — verileri kullanıcıya göstermeden teslim eden, uygulamayı 30 saniye boyunca etkinleştiren bir iOS arka plan senkronizasyon mekanizması.
  • content-available: 1 anahtarı — APNS yükünde sessiz bildirimi normal bildirimden ayıran zorunlu bir işaret; alert, sound ve badge bulunmamalıdır.
  • Teslimat garanti edilmez — iOS, silent push teslimatını pil seviyesine, sıklığa ve uygulama etkinliğine göre optimize eder; gerçek teslimat oranı %70–80'dir.
  • Kullanım durumları — arka plan içerik indirme, widget güncellemeleri, önbellek geçersiz kılma, abonelik senkronizasyonu, rozet güncellemeleri.
  • Sıklık sınırı — cihaz başına saatte 2–3'ten fazla silent push olmamalıdır; limiti aşmak sistem tarafından teslimatın engellenmesine neden olur.
  • iOS, Silent Push'u geciktirebilir veya iptal edebilir pil zayıf olduğunda, düşük güç modundayken veya kullanıcı uzun süre hareketsiz kaldığında.
  • Silent Push — kullanıcı deneyimini optimize etmek için etkili bir araçtır ancak kritik veya garantili bildirimler için kullanılmamalıdır.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun