Push bildirimleri, uygulama kurulumundan sonra kullanıcıyla etkileşim kurmanın en etkili yollarından biridir. Yeni bir mesaj, indirim, içerik güncellemesi hakkında bilgilendirme veya terk edilmiş bir sepeti hatırlatma imkanı sağlarlar. Push bildirimleri (push notifications) bulut hizmetleri aracılığıyla çalışır: Android'de Firebase Cloud Messaging (FCM) ve iOS'ta Apple Push Notification Service (APNS). Bu makalede bildirim mimarisini, türlerini ve her iki platform için kurulum sürecini inceleyeceğiz. Daha fazla bilgi için resmi FCM dokümantasyonuna bakın.
Önemli Noktalar
Push bildirimi, sunucunun uygulamadan bir talep olmadan mobil cihaza gönderdiği bir mesajdır. Mesaj, uygulama kapalı olsa bile onu cihaza ileten bir bulut hizmetinden (FCM veya APNS) geçer. Bildirimler iki türe ayrılır: görüntü bildirimleri (kullanıcıya gösterilir) ve veri bildirimleri (arka plan işleme için veri iletir).
Push bildirimi mimarisi üç bileşen içerir: (1) uygulama sunucusu — FCM/APNS'ye istek gönderir; (2) bulut hizmeti — bildirimi yönlendirir; (3) istemci uygulaması — bildirimi alır ve işler. Sunucunun, bildirimi özellikle o cihaza göndermek için cihazın Device Token'ını bilmesi gerekir. Toplu gönderimler için Topic Subscription kullanılır — cihazların tematik kanallara (haberler, promosyonlar, hava durumu) abone olması.
Her cihazda bildirimler işletim sistemi tarafından işlenir: Android — NotificationManager ve NotificationChannel aracılığıyla, iOS — UNUserNotificationCenter aracılığıyla. Kullanıcı her kanal için bildirim davranışını yapılandırabilir: ses, banner, kilit ekranında gösterme veya tamamen devre dışı bırakma. Kanalların doğru yapılandırılması etkileşimi artırır ve abonelikten çıkma oranlarını azaltır.
IT Sectr'de, push bildirimi sistemini en başından itibaren platforma özgü özellikleri dikkate alarak tasarlıyoruz. Temel kararlar: FCM ve doğrudan APNS arasında seçim, yük biçimi, gönderme sıklığı ve abonelik mekaniği. Bu, bildirimlerin ulaşmadığı veya sistem tarafından engellendiği durumları önlemeye yardımcı olur.
Firebase Cloud Messaging (FCM), bildirim gönderimi için Google'ın çapraz platform hizmetidir. FCM, Android, iOS, Web ve Flutter'ı destekler. iOS'ta FCM, APNS aracılığıyla çalışır: FCM, APNS'ye bir istek gönderir ve APNS bildirimi cihaza iletir. FCM'nin avantajları: her iki platform için tek API, yerleşik analitik, A/B testi, konular ve hedef kitle segmentleri.
Apple Push Notification Service (APNS), Apple'ın yerel hizmetidir. Yalnızca Apple cihazlarında (iOS, macOS, watchOS, tvOS) çalışır. TLS sertifikası veya token (JWT) aracılığıyla doğrudan yetkilendirme gerektirir. APNS şunları sağlar: minimum teslimat gecikmesi ve iOS özellikleriyle doğrudan entegrasyon: PushKit, Notification Service Extension ve Kritik Uyarılar.
FCM ve APNS arasındaki seçim proje mimarisine bağlıdır. Uygulama yalnızca iOS içinse — APNS daha fazla kontrol sağlar. Çapraz platform ise — FCM tek API ile daha kullanışlıdır. Birçok proje FCM'yi birincil hizmet olarak kullanır ve iOS'ta VoIP için ek olarak PushKit'i yapılandırır. Hibrit bir yaklaşım her iki sistemden de en iyisini almayı sağlar.
| Özellik | FCM | APNS |
|---|---|---|
| Platformlar | Android, iOS, Web, Flutter | iOS, macOS, watchOS, tvOS |
| Yetkilendirme | Sunucu Anahtarı (Firebase Console) | TLS sertifikası veya JWT token |
| Maksimum yük | 4 KB (data), 2 KB (notification) | 4 KB |
| Konular | Yerleşik (Topic Messaging) | Hayır (sunucu tarafında uygulanır) |
| Silent Push | Desteklenir | Desteklenir (content-available) |
| PushKit | Hayır | Evet (VoIP, canlı etkinlikler) |
| Analitik | Firebase Analytics | Yerleşik yok |
| Kapalı cihaza teslimat | Sınırlı (üreticiye bağlı) | Evet, PushKit aracılığıyla |
Zengin Bildirim, yalnızca metin değil aynı zamanda medya içeriği de içeren bir bildirimdir: görseller, videolar, ses ve eylem butonları. Android'de NotificationCompat stilleri aracılığıyla uygulanır: BigPictureStyle (büyük görsel), BigTextStyle (daraltılmış/genişletilmiş metin), InboxStyle (mesaj listesi), MediaStyle (oynatma kontrolü). iOS'ta Notification Content Extension kullanılır — genişletilmiş bildirim için özel UI'ya sahip ayrı bir hedef.
Silent Push (iOS'ta content-available), kullanıcıya gösterilmeden teslim edilen bir bildirimdir. Arka plan veri güncellemesi için tasarlanmıştır: içerik senkronizasyonu, ön yükleme, widget güncellemeleri. iOS'ta Silent Push, Background Modes → Remote notifications'ın etkinleştirilmesini gerektirir. Android'de arka plan bildirimlerini işlemek için FirebaseMessagingService onMessageReceived ile kullanılır. Önemli: iOS'ta Silent Push'un sıklık sınırlamaları vardır ve uygulama ön planda değilse teslimatı garanti etmez.
Etkileşimli Bildirim, kullanıcının uygulamayı açmadan bir eylem gerçekleştirmesine olanak tanır. Android'de bunlar bildirimdeki butonlardır (Action): "Yanıtla", "Onayla", "Reddet". Eylemler, bir BroadcastReceiver veya Service başlatan PendingIntent aracılığıyla işlenir. iOS'ta Notification Action, UNNotificationAction ve UNNotificationCategory aracılığıyla kaydedilir. Butonlar foreground (uygulamayı açar), background (arka planda çalıştırır) veya destructive (geri alınamaz eylem — sil, engelle) olabilir.
Notification Content Extension (iOS) — uzun basma veya 3D Touch sırasında genişletilmiş bildirim içeriğini görüntülemek için özel bir görünüm denetleyicisi. Notification Service Extension (iOS) — görüntülemeden önce bildirim içeriğini değiştirmek için ara katman yazılımı: E2E mesajlarının şifresini çözme, görsel yükleme, gizli verileri karartma. Android'de doğrudan benzerleri yoktur — tüm değişiklikler FirebaseMessagingService içinde gerçekleştirilir.
Android için gereklidir: (1) projeye Firebase SDK eklemek (google-services.json); (2) her bildirim kategorisi için bir NotificationChannel (Android 8+) oluşturmak; (3) token ve gelen mesajları almak için FirebaseMessagingService uygulamak. Notification Channel zorunludur — onsuz Android 8+'da bildirimler gösterilmez. Kanalların önceliği vardır (IMPORTANCE_HIGH — ses + açılır pencere, IMPORTANCE_LOW — sessiz) ve kullanıcı tarafından sistem ayarlarında yapılandırılabilir.
iOS için gereklidir: (1) Xcode'da Push Notifications yeteneğini etkinleştirmek; (2) Apple Developer Portal'da APNS anahtarını yapılandırmak; (3) UNUserNotificationCenter.requestAuthorization aracılığıyla yetkilendirme istemek — bu bir kez gösterilen bir sistem iletişim kutusudur. Kullanıcının yanıtı kritiktir: izin verilmezse bildirimler teslim edilmez. Sistem iletişim kutusunu göstermeden önce kullanıcıya bildirimlerin neden gerekli olduğunu açıklamanız önerilir (ön izin istemi).
Device Token (iOS) ve Registration Token (Android), push bildirimleri için benzersiz cihaz tanımlayıcılarıdır. Token, uygulamanın ilk başlatılışında oluşturulur ve değişebilir: yeniden yükleme, veri temizleme, gizlilik ayarlarını sıfırlama durumunda. Sunucu, token'ları düzenli olarak güncellemelidir. Firebase şunları sağlar: onNewToken aracılığıyla token yönetimi için kullanışlı bir API ve test bildirimi göndermek için bir panel (Firebase Console → Cloud Messaging).
Topic Subscription, FCM'nin en etkili mekanizmalarından biridir. Bir cihaz bir konuya (örneğin, "news", "promo_users_ios") abone olur ve sunucu, token listesini saklamaya gerek kalmadan konuya göre bildirimler gönderir. Firebase Topics, konu başına bir milyona kadar aboneyi ve bir ifade dili aracılığıyla koşullu gönderimi (Condition) destekler: "'news' in topics && ('US' in topics || 'UK' in topics)".
Notification Payload, FCM/APNS aracılığıyla gönderilen JSON yapısıdır. FCM için: ayrı notification (görünür kısım — başlık, gövde, görsel) ve data (uygulama için özel alanlar). APNS için: alert, badge, sound, category ve content-available içeren aps sözlüğü. Doğru yük yapısı kritiktir: notification + data aynı anda gelirse, arka plandaki uygulama data'yı alamayabilir. Android için yalnızca data mesajlarının kullanılması ve görsel alanların FCM Console aracılığıyla ayrı olarak iletilmesi önerilir.
Sıkça Sorulan Sorular
FCM (Firebase Cloud Messaging), Android ve çapraz platform bildirimleri için Google'ın hizmetidir. APNS (Apple Push Notification Service), yalnızca iOS/macOS için Apple'ın hizmetidir. FCM bildirimleri iletebilir iOS'ta APNS aracılığıyla, proxy sunucu olarak hareket ederek.
Zengin Bildirim, medya içeriği (görseller, videolar, ses, eylem butonları) içeren gelişmiş bir bildirimdir. iOS'ta Notification Content Extension aracılığıyla uygulanır; Android'de BigPictureStyle ve InboxStyle aracılığıyla uygulanır.
Device Token, push bildirimleri göndermek için benzersiz bir cihaz tanımlayıcısıdır. Android'de FCM'den Registration Token'dır; iOS'ta APNS'den Device Token'dır. Token değişebilir uygulama yeniden yükleme veya ayarları sıfırlama durumunda, bu nedenle sunucuda güncellenmesi gerekir.
Silent Push (sessiz bildirim), kullanıcıya gösterilmeyen bir bildirimdir. Arka plan veri güncellemeleri için kullanılır: içerik senkronizasyonu, widget güncellemeleri, önceden getirme. iOS'ta etkinleştirilmesi gerekir Background Modes → Remote notifications.
PushKit, VoIP uygulamalarında (aramalar, mesajlaşma) kullanılan yüksek öncelikli bildirimlerin teslimi için Apple çerçevesidir. PushKit bildirimi teslim eder uygulama kapatılmış olsa bile ve işleme için uygulamanın başlatılmasını garanti eder.
Özet
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.