Firebase Cloud Messaging: nedir, çalışma prensibi ve push bildirimleri

Yazar: IT Sectr Yayınlanma: 2026-04-29 Okuma süresi: 9 dk

Firebase Cloud Messaging (FCM), mobil ve web uygulamaları için tasarlanmış, Google'a ait çapraz platform push bildirimi ve mesaj iletim hizmetidir. FCM, sürekli bir ağ bağlantısını sürdürme gereksinimi olmadan sunucu ve istemci cihazlar arasında güvenilir veri aktarımı sağlar. Firebase Documentation, 2026'ya göre, FCM altyapısı aracılığıyla dünya çapında her gün 300 milyardan fazla mesaj iletilmektedir. Hizmet, hem otomatik görüntülemeli bildirimleri hem de arka planda veri aktarımı için data mesajlarını destekler.

Temel Noktalar

  • FCM — Android, iOS ve Web'i tek bir API ve Firebase Console üzerinden destekleyen, Google'ın ücretsiz push bildirimi hizmetidir.
  • Mesaj türleri — notification mesajları sistem tarafından otomatik olarak görüntülenir, data mesajları isteğe bağlı JSON göndermeye ve uygulamada işlemeye olanak tanır.
  • Cihaz tokenları — her uygulama benzersiz bir Registration Token alır ve sunucu bunu hedefli push bildirimi göndermek için kullanır.
  • Teslim öncelikleri — normal ve high öncelikleri, güç tasarrufu sırasında sistem davranışını belirler: high mesajlar cihazı Doze modundan uyandırır.
  • Konular ve gruplar — FCM, toplu gönderim için konu aboneliklerini ve tek bir kullanıcının birden çok cihazına göndermek için Device Groups'u destekler.

Firebase Cloud Messaging Nedir

Firebase Cloud Messaging, uygulama sunucusu ve istemci cihazlar arasında push bildirimleri ve data mesajlarının teslimatını sağlayan bir Google bulut hizmetidir. Hizmet, eski Google Cloud Messaging'in (GCM) yerini almış ve Firebase ekosisteminde push teslimi için standart çözüm haline gelmiştir. FCM; Android, iOS, Web ve Unity'yi destekleyerek hedef platformdan bağımsız birleşik bir gönderim arayüzü sağlar.

FCM'nin Temel Özellikleri

Hizmet, her biri belirli bir görevi çözen birkaç mesaj teslim mekanizması sunar. Notification mesajları alındığında sistem tarafından otomatik olarak görüntülenir — geliştiricinin bildirimi göstermek için kod yazması gerekmez. Data mesajları, anahtar-değer çiftleri olarak isteğe bağlı yük aktarır ve uygulama içinde işlenir. Birleşik mesajlar, maksimum esneklik için hem görünür hem de gizli bölümler içerir.

Özel Çözüme Göre Avantajlar

Kendi push sunucunuzu uygulamak, her cihazla sürekli bir TCP bağlantısını sürdürmeyi gerektirir; bu verimsiz ve güvensizdir. FCM, Google'ın aynı anda milyarlarca cihazla bağlantıyı sürdüren birleşik altyapısını kullanır. Hizmet, teslim yeniden denemelerini, mesaj kuyruklarını ve yük dengelemeyi otomatik olarak yöneterek geliştiriciyi bu görevleri kendi başına çözmekten kurtarır.

Firebase Cloud Messaging Nasıl Çalışır

FCM mimarisi üç temel bileşenden oluşur: sağlayıcı sunucu (arka uç), Firebase Cloud Messaging sunucusu ve cihazdaki istemci uygulaması. Sunucu bir mesaj gönderdiğinde, önce FCM altyapısına ulaşır ve bu altyapı onu hedef cihaza yönlendirir. Cihaz çevrimdışıysa, FCM mesajı bir kuyrukta saklar ve bağlantı yeniden kurulduğunda teslim eder.

Cihaz Kaydı ve Token Alma

İlk başlatmada, uygulama Firebase SDK'yı çağırır; SDK, cihazı FCM hizmetine kaydeder ve benzersiz bir Registration Token alır. Bu token, yaklaşık 150 karakter uzunluğunda bir dizedir ve belirli bir cihazdaki belirli bir uygulama örneğini tanımlar. Token, uygulama yeniden yüklendiğinde, veriler temizlendiğinde veya yedekten geri yüklendiğinde değişebilir — geliştirici, token güncellemelerini onNewToken temsilcisi aracılığıyla işlemelidir.

Mesaj Yaşam Döngüsü

Sunucu, FCM API aracılığıyla bir istek gönderdiğinde, mesaj birkaç aşamadan geçer. Alma ve doğrulama — FCM, isteğin doğruluğunu ve hedef cihazın varlığını kontrol eder. Kuyruk — cihaz kullanılamıyorsa, mesaj bir depolama kuyruğuna girer. Yönlendirme — FCM en uygun teslim kanalını (WiFi veya mobil veri) belirler. Teslim — sistem mesajı hedef uygulamaya iletir. Başarılı teslimden sonra FCM, sunucuya bir mesaj tanımlayıcısı döndürür.

FCM'de Mesaj Türleri

Firebase Cloud Messaging, her biri istemci tarafında kendi işleme özelliklerine sahip üç mesaj türünü destekler. Notification mesajları, Android'de Google Play Services ve iOS'ta APNs tarafından işlenir ve otomatik olarak push bannerları olarak görüntülenir. Data mesajları doğrudan uygulamaya teslim edilir ve Android'de onMessageReceived geri çağrımı ve iOS'ta application(_:didReceiveRemoteNotification:) aracılığıyla işlenir.

Notification Mesajları

Notification mesajı önceden tanımlanmış alanlar içerir: başlık, gövde, görsel URL'si ve bildirim sesi. Sistem otomatik olarak bildirimi sistem tepsisinde oluşturur ve görüntüler; uygulama arka planda veya sonlandırılmış olsa bile. Kullanıcı, başlık ve metin içeren standart bir banner görür ve dokunduğunda, uygulama yükte gönderilen verilerle açılır. Uygulama etkinse, notification mesajı yakalanabilir ve kodda işlenebilir.

Data Mesajları

Data mesajı, önceden tanımlanmış alanları olmayan özel bir anahtar-değer çiftleri kümesidir. Yük, sistem tarafından otomatik olarak işlenmez — uygulama ham verileri alır ve bunları isteğe bağlı olarak yorumlayabilir. Data mesajları, arka planda veri senkronizasyonu, yerel önbellek güncelleme, senkronizasyon tetikleyicisi veya bildirim göstermeden komut göndermek için kullanılır. Android'de, uygulama sonlandırılmış veya arka planda olsa bile data mesajı her zaman teslim edilir.

Birleşik Mesajlar

FCM, hem notification bölümü (görüntüleme için) hem de data bölümü (işleme için) içeren bir mesaj göndermeye olanak tanır. Birleşik yük, hem önceden tanımlanmış notification alanlarını hem de isteğe bağlı data anahtarlarını içerir. Sistem, notification bölümünden bildirimi görüntülerken, data bölümü açıldığında uygulamanın intent ekstralarına iletilir. Bu, kullanıcıya bir bildirim göstermeniz ve aynı anda belirli bir ekrana gitmek için bağlam iletmeniz gereken senaryolar için kullanışlıdır.

TürOtomatik görüntülemeArka plan işlemeÖrnek
NotificationEvet, sistem tarafındanOtomatik, kod gerekmezKarşılama push bildirimi
DataHayırUygulama geri çağrımı yoluylaArka planda veri senkronizasyonu
BirleşikEvet, notification bölümüAçıldığında data bölümüBildirim + sipariş bağlantısı

Android'de FCM Kurulumu

Android'de FCM entegrasyonu, uygulama seviyesinde build.gradle dosyası aracılığıyla Firebase SDK'nın bağlanmasıyla başlar. Bağımlılıklar ve google-services.json dosyası eklendikten sonra, uygulama otomatik olarak FirebaseMessagingService geri çağrımı yoluyla iletilen bir Registration Token alır. Bildirimleri almak için, FirebaseMessagingService'i genişleten bir hizmet oluşturmak ve bunu AndroidManifest.xml'de kaydetmek gerekir.

Başlatma ve Token Alma

Firebase SDK bağlandıktan sonra, cihaz tokenı ek kod gerektirmeden otomatik olarak oluşturulur. Token, Task<String> döndüren FirebaseMessaging.getInstance().token aracılığıyla kullanılabilir. Token güncellemelerini izlemek için hizmette onNewToken yöntemi geçersiz kılınır. Sunucunun bu cihaza push bildirimi gönderebilmesi için token sağlayıcı sunucuya gönderilmelidir.

kotlin
class MyFirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        val data = message.data
        val title = "Yeni mesaj"
        val body = data["body"] ?: ""
        showNotification(title, body)
    }
}

Hizmetin Bildirim Dosyasına Kaydedilmesi

FCM mesajlarını almak için hizmet, uygun intent-filter ile AndroidManifest.xml'de kaydedilmelidir. INTERNET izni ve belirtilen eylemle birlikte service etiketi ekleyin. Hizmet kaydı olmadan, mesajlar arka planda uygulamaya teslim edilmeyecektir. Android 13+'te bildirimleri görüntülemek için çalışma zamanı izni POST_NOTIFICATIONS gereklidir.

xml
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
    "android.permission.POST_NOTIFICATIONS" />

<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name=
            "com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

iOS'ta FCM Kurulumu

iOS'ta FCM entegrasyonu, hem Apple Push Notification Service (APNs) tarafında hem de Firebase Console'da yapılandırma gerektirir. FCM'nin bağlantıyı doğrudan yönettiği Android'in aksine, iOS'ta FCM, APNs'yi taşıma katmanı olarak kullanır. Uygulama, UIApplication.shared.registerForRemoteNotifications aracılığıyla push bildirimleri için kaydolur ve Firebase SDK, alınan cihaz tokenını yakalar ve bunu FCM Registration Token'a bağlar.

APNs Kurulumu ve Bildirim Kaydı

FCM'nin iOS'ta çalışması için Firebase Console'a bir APNs anahtarı veya sertifikası yüklenmelidir. APNs anahtarı, sertifikasız modern bir kimlik doğrulama yöntemidir (Apple tarafından önerilir). Anahtar, Apple Developer Portal'da Keys bölümünde oluşturulur ve Firebase Console'daki Cloud Messaging ayarlarına yüklenir. APNs yapılandırmasından sonra uygulama, UNUserNotificationCenter aracılığıyla bildirim izni ister ve APNs üzerinden kaydolur.

swift
import Firebase
import UserNotifications

class AppDelegate: NSObject, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions
        launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current()
            .requestAuthorization(options: [.alert, .sound, .badge])
        application.registerForRemoteNotifications()
        return true
    }

    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken
        deviceToken: Data
    ) {
        Messaging.messaging()
            .apnsToken = deviceToken
    }
}

Gelen Bildirimlerin İşlenmesi

Alınan bildirimleri işlemek için UNUserNotificationCenter temsilcisi uygulanır. willPresent yöntemi, uygulama etkinken bir bildirim alındığında çağrılır — burada özel bir uygulama içi bildirim gösterebilir veya sistem banner'ını yok sayabilirsiniz. didReceive yöntemi, kullanıcı bildirime dokunduğunda çağrılır — burada ilgili ekrana gidilir. Data mesajları için, arka planda bir FCM mesajı alındığında yükü alan MessagingDelegate kullanılır.

Sunucudan Mesaj Gönderme

Sunucu tarafından gönderme FCM mesajları, Firebase Cloud Messaging'in HTTP v1 API'si veya eski Firebase Cloud Messaging API'si aracılığıyla gerçekleştirilir. HTTP v1 API önerilen yöntemdir, Service Account aracılığıyla OAuth 2.0 kimlik doğrulaması kullanır ve teslim analitiği ve bildirimlerin A/B testi dahil tüm modern FCM özelliklerini destekler. İstek, https://fcm.googleapis.com/v1/projects/{project_id}/messages:send uç noktasına POST yöntemiyle gönderilir.

HTTP v1 İstek Biçimi

İstek gövdesi, mesaj bilgilerini içeren bir JSON nesnesi içerir: hedef (token, konu veya koşul), notification (görüntüleme için) ve data (özel yük). Kimlik doğrulama, sunucu ortam değişkenlerine yüklenen bir Service Account JSON anahtarı aracılığıyla yapılır. Erişim tokenı, google-auth-library kullanılarak oluşturulur. Google, otomatik kimlik doğrulama yönetimi ve yeniden denemeler için Firebase Admin SDK'nın kullanılmasını önerir.

js
const admin = require("firebase-admin")

const serviceAccount = require("./serviceAccountKey.json")

admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })

const message = {
    token: "device_registration_token",
    notification: { title: "%20 indirim", body: "Bugün tüm hizmetlerde" },
    data: { screen: "promo", promoId: "324" },
    android: { priority: "high" },
    apns: { payload: { aps: { sound: "default" } } }
}

admin.messaging().send(message)
    .then(response => {
        console.log("Başarıyla gönderildi:", response)
    })
    .catch(error => {
        console.log("Gönderme hatası:", error)
    })

Konular ve Toplu Gönderim

Bir kullanıcı grubuna bildirim göndermek için FCM, konu aboneliklerini destekler. Konu (topic), istemci uygulamasının FirebaseMessaging.getInstance().subscribeToTopic() aracılığıyla abone olduğu adlandırılmış bir kanaldır. Sunucu bir konuya mesaj gönderebilir ve bu mesaj abone olan tüm cihazlara teslim edilir. Konular, haber bültenleri, promosyon bildirimleri ve etkinlik tabanlı push'lar için uygundur. Daha hassas segmentasyon için, mantıksal operatörlerle birden çok konuya dayalı koşullar kullanılır.

Sıkça Sorulan Sorular

FCM ve APNs arasındaki fark nedir?

FCM, Android'de Google'ın kendi altyapısı üzerinden çalışırken, iOS'ta taşıma protokolü olarak APNs'yi kullanır. FCM, her iki platform için de birleşik bir API, otomatik çevrimdışı mesaj depolama ve teslim analitiği sağlar; bunlar saf APNs'de bulunmaz.

Sunucu olmadan FCM mesajları gönderilebilir mi?

Evet, Firebase Console içindeki Cloud Messaging bölümü aracılığıyla seçili cihazlara, konulara veya hedef kitle segmentlerine manuel olarak bildirim gönderebilirsiniz. Bu özellik test ve tek seferlik gönderimler için uygundur ancak üretim uygulamaları için sunucu entegrasyonunun yerini almaz.

Cihaz tokenı değişirse ne yapmalıyım?

FirebaseMessagingService (Android) içindeki onNewToken veya MessagingDelegate (iOS) aracılığıyla token güncellemelerine abone olun. Token değiştiğinde, yeni token'ı sunucuya gönderin ve eskiyi kaldırın. Sunucu, veritabanını güncellemeli ve eski token'a gönderme girişimlerini durdurmalıdır.

FCM çevrimdışı cihazları nasıl yönetir?

FCM, mesajı 28 güne kadar bir kuyrukta saklar ve bağlantı yeniden kurulduğunda teslim eder. Notification mesajları için, her daraltma grubunda yalnızca son mesaj daraltılır. Data mesajları ayrı olarak saklanır ve daraltma olmadan gönderim sırasına göre teslim edilir.

Firebase Cloud Messaging kullanmanın ücreti nedir?

FCM tamamen ücretsizdir ve mesaj sayısında herhangi bir sınırlama yoktur. FCM kullanımı, Spark planında veya Blaze planında ücretlendirilmez. Yalnızca yük boyutunda sınırlamalar vardır: notification mesajları için 4 KB'a kadar ve data mesajları için 2 KB'a kadar.

Özet

  • Firebase Cloud Messaging, tek bir API aracılığıyla Android, iOS, Web ve Unity'yi destekleyen, Google'a ait çapraz platform push bildirimi hizmetidir.
  • FCM mimarisi, sağlayıcı sunucu, Firebase altyapısı ve istemci uygulamasından oluşurlar ve Google'ın küresel ağı üzerinden güvenilir mesaj teslimi sağlarlar.
  • Üç mesaj türü — notification (otomatik görüntüleme), data (UI olmadan isteğe bağlı yük) ve birleşik (tek mesajda her iki tür).
  • Android'de FCM kendi bağlantısıyla FirebaseMessagingService üzerinden çalışırken, iOS'ta MessagingDelegate aracılığıyla token yakalama ile APNs'yi taşıma olarak kullanır.
  • HTTP v1 API, Service Account aracılığıyla OAuth 2.0 kimlik doğrulaması ve teslim analitiği desteği ile sunucu tarafından gönderim için önerilir.
  • Konular abone gruplarına mesaj göndermeye olanak tanır ve koşullar, hassas segmentasyon için birden çok konuyu birleştirmeye izin verir.
  • FCM ücretsizdir, mesaj sınırı yoktur, çevrimdışı mesajları 28 güne kadar saklar ve maksimum yük boyutu 4 KB'tı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