İçeriğe Atla
Mustafa Erbay
Teknoloji · 11 dk okuma · görüntülenme Read in English

Mobil Push Bildirimleri Neden Ulaşmaz: 3 Kritik Sebep

Mobil push bildirimlerinin teslimat sorunlarının altında yatan teknik nedenleri, 20 yıllık sistem mimarisi tecrübemle inceliyorum. Sorunlar, çözümler ve…

100%

Mobil Push Bildirimleri: Gizemli Kayboluşlar ve Teknik Gerçekler

Mobil push bildirimleri, uygulamalarımızın kullanıcılarla iletişim kurmasının en hızlı ve etkili yollarından biri. Ancak bazen, bu bildirimler adeta bir kara delikte kaybolur. Kullanıcılardan “Bildirimlerim gelmiyor” şikayetlerini aldığınızda, genellikle ilk aklınıza gelen şey uygulamanızdaki bir hata olur. Oysa gerçekler genellikle daha karmaşık ve altyapısal katmanlarda gizlidir. 20 yıllık sistem ve network tecrübemle, bu bildirimlerin neden ulaşmadığına dair derinlemesine bir analiz sunacağım. Bu yazıda, sadece yüzeydeki olası sorunlara değil, altta yatan kritik teknik sebeplere odaklanacağız.

Bu tür sorunlar, kullanıcı deneyimini doğrudan etkiler ve uygulamanızın güvenilirliğini zedeler. Bir e-ticaret uygulamasında indirim bildirimi gelmemesi, bir haber uygulamasında acil durum uyarısının gecikmesi veya bir oyun uygulamasında önemli bir etkinlik bilgisinin kaçırılması, doğrudan gelir kaybına veya kullanıcı memnuniyetsizliğine yol açabilir. Bu nedenle, push bildirimlerinin işleyişini tüm katmanlarıyla anlamak hayati önem taşır.

1. Platform Servislerinin Davranışı: Google Firebase Cloud Messaging (FCM) ve Apple Push Notification Service (APNS)

Push bildirimlerinin temelinde, mobil işletim sistemlerinin sağladığı servisler yatar. Android için Google Firebase Cloud Messaging (FCM) ve iOS için Apple Push Notification Service (APNS), bildirimlerin cihazlara iletilmesinden sorumlu anahtar oyunculardır. Bu servislerin çalışma prensipleri ve karşılaştıkları zorluklar, bildirimlerin ulaşmamasına neden olabilecek ilk ve en önemli faktördür.

FCM ve APNS, aslında doğrudan cihazlara bildirim göndermezler. Bunun yerine, belirli koşullar altında bildirimleri bekleyen uygulamalar için bir “aracı” görevi görürler. Bir uygulama arka plandayken veya kapalıyken, cihazın sürekli olarak APNS veya FCM sunucularıyla doğrudan bir bağlantı kurması hem pil tüketimi hem de ağ kaynakları açısından verimli olmaz. Bu yüzden, bu servisler cihazlar adına sürekli bir bağlantı veya düzenli aralıklarla “check-in” mekanizmaları kullanarak bildirimleri beklerler.

Bu servislerin kendileri de büyük ölçekli altyapılardır ve zaman zaman bakım çalışmaları, yoğunluk veya geçici kesintiler yaşayabilirler. Özellikle yoğun saatlerde, platform servislerine gönderilen bildirim isteklerinde gecikmeler veya paket kayıpları yaşanması mümkündür. Bu tür durumlar, sizin uygulamanızdan kaynaklanmasa bile bildirimlerin teslimini etkileyebilir.

1.1. Cihaz Bağlantı Durumu ve Arka Plan İşlemleri

Bir push bildirimi için en kritik aşamalardan biri, cihazın ilgili platform servisiyle (FCM veya APNS) sağlıklı bir bağlantıya sahip olup olmadığıdır. Cihaz internete bağlı değilse, zayıf bir Wi-Fi sinyaline sahipse veya hücresel verisi kapalıysa, platform servisinden bildirim alması imkansız hale gelir. Ancak sorun genellikle bu kadar basit değildir.

Birçok modern işletim sistemi, pil ömrünü uzatmak ve ağ trafiğini optimize etmek amacıyla arka plan uygulamalarının ağ erişimini kısıtlar. Android’in “Doze Mode” ve “App Standby” özellikleri veya iOS’un arka plan işlem kısıtlamaları, uygulamaların belirli zaman aralıklarında veya belirli koşullar altında ağ istekleri yapmasını engelleyebilir. Bu kısıtlamalar, FCM veya APNS’in cihazla senkronize olmasını engelleyerek bildirimlerin teslimini geciktirebilir veya tamamen durdurabilir.

Örneğin, bir kullanıcı telefonunu uzun süre kullanmadığında Android’deki Doze Mode devreye girer ve uygulamanın ağ erişimini büyük ölçüde kısıtlar. Bu moddayken yalnızca belirli “whitelisted” uygulamalar veya sistem servisleri ağa erişebilir. Eğer FCM’in bu modda çalışması engellenmemişse, bildirimler cihaza ulaşamayabilir. Benzer şekilde, iOS’ta da arka plan veri yenileme kapalıysa veya uygulama, Apple’ın belirlediği arka plan işlem limitlerini aşıyorsa, bildirimler gecikebilir.

1.2. Kayıt Belirteçleri (Registration Tokens) ve Geçerlilik Sorunları

Her mobil uygulama, yüklendiğinde veya ilk kez başlatıldığında FCM veya APNS’ten benzersiz bir kayıt belirteci (registration token) alır. Bu belirteç, sunucunuzun belirli bir cihaza bildirim göndermesini sağlayan “adrese” benzer. Ancak bu belirteçler kalıcı değildir ve çeşitli nedenlerle geçersiz hale gelebilir:

  • Uygulamanın Yeniden Yüklenmesi: Kullanıcı uygulamayı sildiğinde veya cihazın verilerini temizlediğinde, uygulama yeni bir belirteç alır.
  • Platform Servisi Güncellemeleri: FCM veya APNS’in kendisi, güvenlik veya performans amacıyla belirteçleri sıfırlayabilir veya yenileyebilir.
  • Uygulama Sürüm Güncellemeleri: Nadiren de olsa, uygulama güncellemeleri sırasında belirteçlerin güncellenmesi gerekebilir.
  • Cihazın Fabrika Ayarlarına Dönmesi: Bu durumda tüm veriler silinir ve uygulamalar yeni belirteçler almak zorunda kalır.

Eğer sunucu tarafınız, geçersiz hale gelmiş bir belirtece bildirim göndermeye çalışırsa, bu bildirim doğal olarak hedefe ulaşmayacaktır. Çoğu zaman, platform servisleri geçersiz belirteçler hakkında sunucunuza geri bildirimde bulunur (örneğin, FCM’de “InvalidRegistration” hata kodu). Ancak bu geri bildirimleri düzenli olarak işlemek ve veritabanınızdaki geçersiz belirteçleri temizlemek kritik bir bakım işlemidir.

Bir üretim ERP’si projesinde çalışırken, operatör ekranları için anlık uyarılar gönderiyorduk. Bir süre sonra operatörlerden “Bazı uyarılar gelmiyor” geri bildirimleri gelmeye başladı. Uzun süren debug sonucunda, uygulama güncellemeleri ve kullanıcıların cihazlarını sıfırlaması nedeniyle sunucumuzdaki belirteçlerin azımsanmayacak bir kısmının geçersiz olduğunu tespit ettik. Bu, o oranda bildirimin doğrudan kaybolmasına neden oluyordu. Hemen bir mekanizma kurarak, uygulamanın her açılışında güncel belirteci sunucuya göndermesini sağladık ve geçersiz olanları temizledik. Bu basit ama etkili çözüm, bildirim teslim oranını belirgin şekilde yükseltti.

2. Ağ Katmanı Sorunları: MTU, Proxy ve Güvenlik Duvarları

Push bildirimlerinin platform servislerinden cihazlara ulaşma yolculuğu, genellikle karmaşık bir ağ altyapısından geçer. Bu yolculuk sırasında karşılaşılan ağ katmanı sorunları, bildirimlerin kaybolmasına neden olabilecek ikinci büyük faktördür. Özellikle kurumsal ağlarda veya kısıtlayıcı mobil ağlarda bu tür sorunlar daha sık görülür.

FCM ve APNS sunucuları, genellikle güvenilir ve yüksek bant genişliğine sahip ağlarda bulunurlar. Ancak cihazların bulunduğu ağ ortamı değişkenlik gösterebilir. Mobil cihazlar, farklı Wi-Fi ağlarına bağlanabilir veya hücresel veri kullanabilirler. Bu ağların her birinin kendine özgü gecikme süreleri, paket kayıp oranları ve bant genişliği kısıtlamaları olabilir.

Bir bildirim paketi, sunucudan çıktığı andan itibaren çeşitli ağ cihazlarından geçer: yönlendiriciler (routers), anahtarlar (switches), güvenlik duvarları (firewalls) ve proxy sunucuları. Bu cihazlardan herhangi birinde yapılan yanlış bir yapılandırma veya kısıtlama, bildirim paketinin yolunu kesebilir.

2.1. Maksimum Transfer Birimi (MTU) Uyuşmazlıkları

MTU (Maximum Transmission Unit), bir ağ katmanında iletilebilecek en büyük veri paketi boyutunu ifade eder. Farklı ağ segmentleri veya cihazları farklı MTU değerlerine sahip olabilir. Eğer bir ağ yolundaki bir cihaz, bir paketi kabul edebileceğinden daha büyük bir paket alırsa, bu paketi ya parçalamaya (fragmentation) çalışır ya da reddeder.

FCM ve APNS trafiği genellikle TCP üzerinden iletilir. TCP, paketlerin doğru sırayla ve eksiksiz olarak teslim edilmesini sağlamak için akış kontrolü ve hata düzeltme mekanizmaları kullanır. Ancak, eğer yol üzerindeki bir cihaz düşük bir MTU değerine sahipse ve TCP segmentleri doğru şekilde parçalanmazsa veya MSS (Maximum Segment Size) doğru ayarlanmazsa, büyük TCP segmentleri kaybolabilir.

Örneğin, bir kullanıcının mobil cihazı 5G ağındayken, operatörün ağı 1500 MTU’yu desteklerken, bir VPN tüneli veya kurumsal bir proxy sunucusu 1400 MTU ile çalışıyor olabilir. Eğer TCP segmentleri 1400 byte’tan büyükse, bu segmentler proxy sunucusunda düşürülebilir. Bu durum, özellikle büyük veri yükleri taşıyan veya uzun süreli bağlantıları olan bildirimler için sorun yaratabilir.

Kurumsal Android cihazlarında karşılaşılabilecek tipik bir senaryo şudur: şirket ağına bağlanıldığında, şirket dışından gelen bildirimler (FCM ve APNS dahil) neredeyse hiç gelmez. Böyle bir durumda akla gelmesi gereken nedenlerden biri, ana gateway’de (örneğin bir FortiGate) yanlış yapılandırılmış bir MSS clamping ayarıdır. Bu ayar, TCP segmentlerinin maksimum boyutunu VPN tünelinin MTU’suna uygun hale getirmek yerine çok daha düşük bir değere sabitlerse, FCM’den gelen büyük TCP segmentleri bu gateway’den geçerken düşebilir. Gateway’deki MSS clamping ayarını doğru değere çekmek bu tür sorunu çözer.

2.2. Proxy Sunucuları ve Güvenlik Duvarı Kuralları

Kurumsal ağlarda, internet trafiği genellikle merkezi bir proxy sunucusu veya güvenlik duvarından geçer. Bu cihazlar, ağ güvenliğini sağlamak, trafiği izlemek ve bant genişliğini yönetmek için kullanılır. Ancak, bu cihazların yanlış yapılandırılmış kuralları, FCM ve APNS gibi belirli servislerin iletişimini engelleyebilir.

FCM ve APNS, belirli IP adresleri ve portlar üzerinden iletişim kurarlar. Bu IP adresleri ve portlar zaman zaman değişebilir veya geniş bir aralıkta yer alabilir. Güvenlik duvarı veya proxy sunucusundaki kurallar, bu iletişimleri engelliyorsa, bildirimler cihaza ulaşamaz. Örneğin, güvenlik duvarı sadece belirli HTTP/HTTPS portlarına izin veriyorsa ve FCM/APNS bu portların dışında bir kanal kullanmaya çalışıyorsa, iletişim kesilir.

Proxy sunucularının kendisi de bir sorun kaynağı olabilir. Bazı proxy’ler, trafiği incelemek için SSL/TLS şifrelemesini kırıp yeniden şifreleyebilir (SSL Inspection). Eğer FCM/APNS trafiği bu şekilde işlenirken bir sorun oluşursa veya proxy, bu trafiği tanımayıp bloklarsa, bildirimler kaybolabilir. Ayrıca, proxy’lerin bağlantı süresi veya bant genişliği kısıtlamaları da özellikle uzun süren bağlantıları veya yüksek trafik hacmini etkileyebilir.

Aynı mantık güvenlik duvarı kuralları için de geçerlidir: sıkı yapılandırılmış bir kurumsal güvenlik duvarı, APNS’in kullandığı bazı portları bilinmeyen trafik olarak algılayıp bloklayabilir; bu da o ağa bağlı kullanıcıların bildirimleri alamamasıyla sonuçlanır. APNS dokümantasyonundaki gerekli portları güvenlik duvarında açmak çözümdür. Bu, güvenliğin önemli olduğu ortamlarda bile, işlevselliği engellememesi için servislerin doğru yapılandırılması gerektiğini gösterir.

3. Uygulama ve Cihaz Seviyesi Optimizasyonları: Pil Tasarrufu ve Arka Plan Kısıtlamaları

Push bildirimlerinin ulaşmamasının üçüncü ana nedeni, uygulamanın kendisi ve cihaz üzerindeki işletim sistemi seviyesindeki optimizasyonlar ve kısıtlamalardır. Bu optimizasyonlar genellikle kullanıcı deneyimini iyileştirmeyi hedeflerken, bazen istenmeyen yan etkilere yol açabilir.

Modern akıllı telefonlar, pil ömrünü uzatmak ve performansı artırmak için oldukça agresif pil tasarrufu mekanizmaları kullanır. Bu mekanizmalar, arka planda çalışan uygulamaların kaynak tüketimini sürekli olarak izler ve optimize eder. Eğer bir uygulama bu mekanizmalar tarafından “kaynak israfı” olarak algılanırsa, işletim sistemi tarafından kısıtlanabilir.

3.1. Arka Plan İşlem Kısıtlamaları ve ‘Doze Mode’ Gibi Mekanizmalar

Android’deki “Doze Mode” ve “App Standby”, iOS’taki arka plan işlem yenileme kısıtlamaları gibi özellikler, uygulamaların sürekli olarak ağa bağlı kalmasını veya arka planda aktif olmasını engeller. Bu kısıtlamalar, bildirimlerin teslimini doğrudan etkiler.

Örneğin, Doze Mode, cihazın uyku modundayken uygulamaların ağ erişimini neredeyse tamamen durdurur. Sadece belirli “korumalı” uygulamalar veya sistem servisleri bu kısıtlamadan muaftır. FCM’nin kendisi genellikle bu korumalı uygulamalar listesinde yer alır, ancak bazen bu mekanizmaların davranışları öngörülemeyebilir veya uygulama geliştiricilerin bu modları dikkate alarak bildirim gönderme stratejilerini ayarlaması gerekebilir.

Bu noktada sık yapılan bir hata, arka planda bildirimleri zamanlamak için basit bir Timer kullanmaktır. Bu tür bir Timer, Doze Mode devreye girdiğinde durur ve kritik hatırlatıcılar zamanında ulaşmaz. Görev hatırlatıcılarını WorkManager ile yeniden yapılandırmak, işletim sisteminin pil optimizasyonlarıyla uyumlu çalıştığı için bildirimlerin güvenilir şekilde iletilmesini sağlar. Platformun pil optimizasyonlarını anlamak ve onlara uyum sağlamak bu yüzden önemlidir.

3.2. Uygulama İçi Hata Ayıklama ve Kayıt (Logging) Eksikliği

Push bildirimlerinin neden ulaşmadığını anlamak için en önemli araçlardan biri, hem istemci (mobil uygulama) hem de sunucu tarafındaki detaylı log kayıplarıdır. Ancak çoğu zaman, geliştiriciler bu loglama mekanizmalarını yeterince detaylı kurmazlar veya üretim ortamında bu logları yeterince izlemezler.

Eğer mobil uygulamanız FCM/APNS’ten bir belirteç alamazsa, belirteci kaybederse veya platform servislerinden bir hata alırsa, bu bilgiyi loglaması gerekir. Benzer şekilde, sunucu tarafında da bir bildirim gönderme isteği yapıldığında, bu isteğin başarılı olup olmadığı, hangi belirtecin kullanıldığı, platform servisinden ne tür bir yanıt alındığı gibi bilgilerin loglanması, sorun giderme sürecini inanılmaz derecede kolaylaştırır.

Arka planda çalışan bir uygulamanın pil optimizasyonları nedeniyle zaman zaman durması ve bu sırada gelen olayları (SMS, bildirim vb.) işleyememesi tipik bir durumdur; ve bu davranış çoğu zaman ancak detaylı loglama ile görünür hale gelir. Logsuz bir ortamda böyle bir kesintiyi tespit etmek neredeyse imkansızken, doğru yerlere konmuş log kayıtları sorunun kaynağını doğrudan ortaya çıkarır. Bir sorunun kaynağını bulmak için loglar bu nedenle kritiktir.

3.3. Kötü Yönetilen Bildirim Kanalları (Android)

Android’de, uygulama geliştiricileri bildirimleri farklı kanallara ayırabilir. Örneğin, bir haber uygulaması “Önemli Haberler”, “Spor Haberleri”, “Teknoloji Haberleri” gibi farklı bildirim kanalları oluşturabilir. Kullanıcılar bu kanalları kendi tercihlerine göre açıp kapatabilir veya ses, titreşim gibi ayarlarını değiştirebilir.

Eğer uygulama geliştiricisi bildirim kanalını doğru şekilde yapılandırmazsa veya kullanıcı bu kanalı tamamen devre dışı bırakırsa, bu kanala gönderilen bildirimler kullanıcıya ulaşmaz. Örneğin, geliştirici “Acil Uyarılar” adında bir kanal oluşturup, bu kanala kritik bildirimler gönderirken, kullanıcı bu kanalı yanlışlıkla kapatmış olabilir.

Bu durum, doğrudan teknik bir hata olmasa da, kullanıcıların bildirim almadığını düşünmesine neden olabilir. Uygulamada “Bildirim almıyorum” şikayetinin altında çoğu zaman, kullanıcının kendi belirlediği bildirim kanalını sessize alması veya tamamen kapatması yatar. Bu tür durumlar için, uygulamaya bildirim ayarlarını kontrol etme ve gerekli kanalları etkinleştirme konusunda kullanıcıyı yönlendiren bir akış eklemek faydalıdır.

Sonuç: Push Bildirimleri Bir Bütün Olarak Ele Alınmalı

Push bildirimlerinin güvenilir bir şekilde teslim edilmesi, tek bir bileşenin başarısıyla değil, tüm sistemin uyumlu çalışmasıyla mümkündür. Platform servislerinin (FCM/APNS) davranışları, ağ altyapısının sağlığı, işletim sisteminin pil optimizasyonları ve uygulamanın kendi içindeki doğru yapılandırmalar, bu sürecin her bir parçasıdır.

Bu yazıda ele aldığım üç ana başlık – platform servisleri, ağ katmanı sorunları ve uygulama/cihaz seviyesi optimizasyonları – push bildirimlerinin ulaşmamasının en yaygın nedenlerini kapsıyor. Ancak her zaman olduğu gibi, gerçek dünyadaki sorunlar daha spesifik ve beklenmedik olabilir. Bu nedenle, bir sorunla karşılaştığınızda, sadece uygulamanızın koduna odaklanmak yerine, tüm bu katmanları sistematik bir şekilde incelemek kritik önem taşır.

Unutmayın, kullanıcılar için bildirimler sadece bir mesajdır; ancak bu mesajın ulaşması, uygulamanızın güvenilirliği ve kullanıcı deneyimi için hayati bir köprüdür. Bu köprüyü sağlam tutmak, sürekli dikkat ve detaylı bir anlayış gerektirir.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

Mobil push bildirimlerinin ulaşmamasının temel nedenleri nelerdir?
Mobil push bildirimlerinin ulaşmamasının temel nedenleri, platform servislerinin davranışı, ağ ve cihaz faktörleri, ve uygulamanın teknik altyapısına bağlıdır. Özellikle Google Firebase Cloud Messaging (FCM) ve Apple Push Notification Service (APNS) servislerinin çalışma prensipleri ve karşılaştıkları zorluklar, bildirimlerin ulaşmamasına neden olabilecek ilk ve en önemli faktördür.
FCM ve APNS servislerini kullanarak mobil push bildirimleri gönderirken nelere dikkat edilmelidir?
FCM ve APNS servislerini kullanarak mobil push bildirimleri gönderirken, özellikle cihazlara bildirimlerin iletilmesi sırasında oluşan gecikme ve hatalara dikkat edilmelidir. Ayrıca, bu servislerin belirli koşullar altında cihazlara bildirim göndermemesi veya cihazların bu servislerle iletişim kuramaması gibi durumlar da dikkate alınmalıdır. Ben, bu servisleri kullanırken, cihazların ve ağın durumunu sürekli olarak izlemenin ve bu servislerin API'lerini doğru bir şekilde kullanmanın重要 olduğunu gördüm.
Mobil push bildirimlerinin ulaşmaması durumunda hangi adımlar takip edilmelidir?
Mobil push bildirimlerinin ulaşmaması durumunda, ilk olarak uygulamanın teknik altyapısını kontrol etmek ve olası hataları gidermek önemlidir. Ardından, FCM ve APNS servislerinin durumunu kontrol etmek ve bu servislerle ilgili sorunları çözmek gerekir. Ben, bu tür durumlarda, kullanıcı deneyimini doğrudan etkileyen bu sorunları hızlı bir şekilde çözmek için, sistemlerin ve ağların durumunu sürekli olarak izlemenin ve gerekli adımları takip etmenin önemli olduğunu düşünüyorum.
Mobil push bildirimlerinin ulaşması için ağ ve cihaz faktörlerinin önemi nedir?
Ağ ve cihaz faktörleri, mobil push bildirimlerinin ulaşması için çok önemlidir. Özellikle cihazların ağa bağlanabilmesi, ağın稳il olması ve cihazların yeterli kaynaklara sahip olması gibi faktörler, bildirimlerin iletilmesi açısından kritik öneme sahiptir. Ben, ağ ve cihaz faktörlerini dikkate almadan, mobil push bildirimlerinin ulaşmasını sağlamak zor olduğunu gördüm. Bu nedenle, bu faktörleri dikkate alan bir sistem mimarisi tasarlamak, mobil push bildirimlerinin ulaşmasını sağlamak için önemlidir.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Yeni yazılardan haberdar olun

Yeni içerikler ve teknik notlar e-postanıza gelsin.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar