Push bildirimleri, uygulama kapalıyken bile sunucu tarafından mobil cihaza gönderilen mesajlardır. Google Firebase, 2024'e göre, Push bildirimleri özelleşmiş hizmetler — Android'de FCM ve iOS'ta APNS — aracılığıyla işlenir ve aynı anda milyonlarca cihaza gerçek zamanlı teslimat sağlar. Modern mobil uygulamalarda kullanıcı deneyiminin ayrılmaz bir parçası haline gelmişlerdir.
Önemli Noktalar
Push bildirimleri, uygulama sunucusunun kullanıcının açık talebi olmadan cihazına gönderdiği kısa mesajlardır. Banner, simge rozeti veya ses sinyali şeklinde görünür, kullanıcının dikkatini uygulamaya çeker ve önemli olaylar hakkında bilgilendirir.
Bir Push bildirimi bir başlık, mesaj gövdesi ve isteğe bağlı verilerden (payload) oluşur. SMS'ten farklı olarak, Push bildirimleri kullanıcı için ücretsizdir ve bulut hizmet altyapısı — Android için FCM ve iOS için APNS — aracılığıyla teslim edilir. Push bildirimlerinin ana hedefleri: etkileşimi artırmak, olaylar hakkında bilgilendirmek ve kullanıcıyı uygulamaya geri getirmektir.
Kullanım istatistikleri, doğru yapılandırılmış Push bildirimlerinin uygulama bağımlılığını %30–60 oranında artırdığını gösteriyor. Ancak aşırı bildirim sıklığı abonelik iptallerine yol açar — kullanıcıların %60'ından fazlası, günde üç defadan fazla gönderilirse bildirimleri devre dışı bırakır.
Bir Push sistemi üç bileşen içerir: uygulama sunucusu, platform hizmeti (FCM/APNS) ve cihazdaki istemci uygulaması. Sunucu, platform hizmetine bir istek gönderir; platform hizmeti, işletim sistemiyle kalıcı bir bağlantı aracılığıyla bildirimi hedef cihaza iletir.
Push bildirimlerinin teslimat mekanizması, cihaz ve platform hizmeti arasındaki kalıcı bir bağlantıya dayanır. İşletim sistemi, tüm Push mesajlarının geçtiği şifrelenmiş bir iletişim kanalını korur.
İlk başlatmada, uygulama bildirim gönderme izni ister ve FCM veya APNS'den benzersiz bir cihaz token'ı alır. Bu token, uygulama örneğini benzersiz şekilde tanımlayan 4 KB'a kadar bir dizedir. Uygulama yeniden yüklendiğinde veya cihaz yedekten geri yüklendiğinde token değişir.
class FirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
showNotification(message.notification)
}
}
Uygulama sunucusu, hedef token'ı, başlığı, gövdeyi ve ek verileri belirterek FCM API'sine veya APNS API'sine bir HTTP isteği gönderir. Platform hizmeti bir teslimat durumuyla yanıt verir: başarı, geçersiz token (cihaz uygulamayı kaldırdı) veya hız sınırı aşıldı.
fetch("https://fcm.googleapis.com/fcm/send", {
method: "POST",
headers: {
"Authorization": "key=AIzaSy...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "device_token_here",
notification: {
title: "Yeni mesaj",
body: "Yeni bir bildiriminiz var!"
}
})
})
FCM ve APNS arasındaki seçim hedef platforma bağlıdır. FCM, Android ve iOS'u desteklerken, APNS yalnızca Apple ekosistemini destekler. Çapraz platform mobil uygulama geliştirme için önemli temel farkları inceleyelim.
FCM, Google Play Services üzerinde çalışan bir Google hizmetidir. İki teslimat şemasını destekler: otomatik görüntülemeli bildirimler ve uygulamanın kendi başına işlediği veri bildirimleri. FCM ücretsizdir ve gönderilen mesaj sayısında bir sınır yoktur.
APNS, 10 MB'a kadar çoklu ortam eklerini (görüntü, video, ses) destekleyen Apple'ın hizmetidir. APNS üzerinden gönderme için bir TLS sertifikası veya kimlik doğrulama anahtarı gerekir. APNS, tek bir cihaza gönderme sıklığını sınırlar — dakikada 150 bildirimden fazla olamaz, ardından hız sınırlaması devreye girer.
| Özellik | FCM | APNS |
|---|---|---|
| Platformlar | Android, iOS, Web | iOS, macOS, watchOS |
| Gereksinimler | Google Play Services | Apple Developer Program |
| Medya | 4 KB'a kadar (veri) | 10 MB'a kadar (ekler) |
| Öncelik | normal/yüksek | anlık/güç tasarrufu |
| Maliyet | ücretsiz | ücretsiz (hesap gerekli) |
Push bildirimleri görüntüleme yöntemi ve amaca göre sınıflandırılır. Türleri anlamak, her kullanıcı etkileşim senaryosu için doğru stratejiyi seçmeye yardımcı olur.
En yaygın tür — başlık ve gövde içeren görüntülenen bir bildirim. İşletim sistemi bunu otomatik olarak bildirim panelinde, kilit ekranında ve banner olarak gösterir. Geliştirici, doğrudan eylemler için ses, titreşim, simge rozeti ve eylem düğmeleri (yanıtla, aç, kapat) yapılandırabilir.
Veri bildirimleri, görsel görüntüleme olmadan yalnızca payload içerir. Uygulama bunları arka planda işler: verileri senkronize eder, önbelleği günceller veya indirmeleri başlatır. Android'de veri bildirimleri güvenilir şekilde teslim edilir; iOS'ta yalnızca uygulama etkin olduğunda veya arka plan getirme yoluyla teslim edilir.
Modern mobil işletim sistemleri, görüntü, GIF, video ve ses içeren zengin ve medya bildirimlerini destekler. iOS'ta bu, UNNotificationAttachment aracılığıyla; Android'de ise BigPictureStyle ve InboxStyle aracılığıyla sistem panelindeki bildirim görünümünü özelleştirmek için uygulanır.
Sessiz bildirimler kullanıcıya gösterilmez ve arka planda senkronizasyon için kullanılır. iOS'ta, uygulamayı açmadan önce verileri güncelleme gibi görevler için yüksek önceliğe sahiptirler. Android bunları minimum öncelikle veri bildirimleri olarak ele alır.
Push bildirimlerini yapılandırma, altyapı, sunucu ve istemci kodu düzeyinde eylemler gerektirir. Çapraz platform mobil proje için tipik süreci inceleyelim.
Android için Firebase Console'da bir proje oluşturmanız, google-services.json dosyasını projeye eklemeniz ve FirebaseMessagingService'i yapılandırmanız gerekir. Cihaz token'ı FirebaseInstanceId veya FirebaseMessaging.getInstance().token aracılığıyla alınır ve ilk başlatmada veya değiştiğinde API aracılığıyla sunucuya gönderilir.
iOS için Apple Developer Program aboneliği, Developer Portal'da bir Push sertifikası veya APNS anahtarı oluşturma ve Xcode'da Push Notifications özelliğini etkinleştirme gereklidir. Bildirim kaydı, UIApplication.shared.registerForRemoteNotifications aracılığıyla yapılır ve AppDelegate'de deviceToken alınır.
import UIKit
import UserNotifications
@main
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
let token = deviceToken
.map { String.format("%02x", $0) }
.joined()
// token'ı sunucunuza gönderin
}
}
Sunucu tarafında, Push bildirimleri REST API veya Admin SDK aracılığıyla gönderilir. FCM, Firebase Admin SDK'yı (Node.js, Java, Python, Go için kullanılabilir) kullanırken, APNS, pucher kitaplıklarını (Java için pushy, Node.js için apn2) kullanır. Token'ların son güncelleme zaman damgasıyla birlikte bir veritabanında saklanması önerilir.
Push bildirimi güvenliği kritik öneme sahiptir, çünkü bunlar aracılığıyla gizli veriler iletilebilir. Her iki platform da temel koruma mekanizmaları sağlar, ancak geliştiricinin bunları doğru kullanması gerekir.
Bir Push bildiriminin payload'ı, kullanıcıların kişisel verilerini içerebilir: adlar, işlem tutarları, mesaj bağlantıları. FCM/APNS ve cihaz arasındaki iletişim kanalı şifrelenmiş olsa bile, üçüncü taraf bir yazılım bildirimi ele geçirirse veriler uygulama düzeyinde yakalanabilir. Hassas payload'ın sunucuda AES-256 kullanılarak şifrelenmesi ve Keychain (iOS) veya EncryptedSharedPreferences (Android)'de saklanan bir anahtarla cihazda çözülmesi önerilir.
Cihaz token'ı, cihazın hacklenmesi veya trafiğin ele geçirilmesi durumunda tehlikeye girebilecek bir oturum tanımlayıcısıdır. Uygulama sunucusu, göndermeden önce token'ları doğrulamalıdır: veritabanıyla karşılaştırmalı, etkin olmayan token'ları izlemeli ve tekrarlanan InvalidToken hatalarında bunları kaldırmalıdır. FCM ve APNS, geçersiz token'lar için InvalidRegistration durumunu döndürür — bunu görmezden gelmeyin.
Sıklık kontrolü olmadan, Push bildirimleri kullanıcıları rahatsız eden ve bağımlılığı azaltan bir spam aracı haline gelebilir. Sunucuda sınırlar belirleyin: tek bir kullanıcı için saatte 5'ten fazla bildirim ve 3'ten fazla özdeş mesaj göndermeyin. İşlem bildirimleri (sipariş onayı, şifre değişikliği) için sınırlar daha yüksek olabilir — saatte 10'a kadar, çünkü kritik bilgiler içerirler. Bir saldırganın sunucunuz aracılığıyla toplu bildirimleri tetikleyememesi için API gönderme düzeyinde hız sınırlaması kullanın.
Sıkça Sorulan Sorular
Evet, ancak Android'de APNS'ye doğrudan bağlantı desteklenmez — Google Play Services'i olmayan cihazlar, Huawei Mobile Services (HMS) ve özel WebSocket bağlantıları gibi alternatifleri kullanır. Bununla birlikte, FCM ücretsizliği ve güvenilirliği sayesinde çoğu uygulama için standart olmaya devam etmektedir.
FCM ve APNS, son bildirimi kendi sunucularında saklar ve bağlantı yeniden kurulduğunda teslim eder. Her cihaz, her uygulamadan yalnızca son bildirimi saklar, bu nedenle uzun süreli ağ yokluğunda ara mesajlar kaybolur.
En yaygın nedenler süresi dolmuş Push sertifikası (1 yıl geçerli), geçersiz cihaz token'ı, ayarlarda bildirimlerin devre dışı bırakılması veya düşük güç modunun etkinleştirilmesidir. Apple Developer Console'daki sertifikayı kontrol edin ve uygulamanın UNUserNotificationCenter aracılığıyla izin istediğinden emin olun.
Android'de, Intent aracılığıyla açma izleme ile NotificationCompat.Builder'da PendingIntent kullanın. iOS'ta, UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:) yöntemini kullanın. FCM, gönderilen her bildirim için teslimat ve açma raporları sağlar.
Minimum düzeyde — Push bildirimleri sürekli bir bağlantıyı sürdürmez; işletim sistemi tüm uygulamalar için tek bir sistem kanalı kullanır ve bu da toplam güç tüketimini en aza indirir. Sık gönderme (her 5 dakikada bir), cihazı uyku modundan uyandırarak daha fazla enerji tüketir. iOS'taki sessiz bildirimler, alınan verileri işlemek için uygulamanın arka planda etkinleştirilmesi nedeniyle daha fazla pil tüketir.
Ö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.
Ayrıca okuyun