FCM — nedir, geliştirmede Firebase Cloud Messaging ilkeleri

Yazar: IT Sectr Yayınlanma: 2026-03-19 Okuma süresi: 8 dk

FCM (Firebase Cloud Messaging), push bildirimleri göndermek ve bir sunucu ile mobil uygulamalar arasında veri aktarmak için Google'ın çapraz platform hizmetidir. Tek bir API aracılığıyla Android, iOS ve web platformlarını destekler. Firebase Dokümantasyonu'na göre, FCM dünya çapında günlük 1 milyardan fazla mesaj işler.

Önemli Noktalar

  • FCM, push bildirimleri ve veri göndermek için Google'ın çapraz platform hizmetidir
  • Mimari — istemci bir kayıt tokeni alır, sunucu Firebase Connection Server üzerinden mesaj gönderir
  • Mesaj türleri — notification (otomatik görüntüleme) ve data (uygulamada tam işleme)
  • Teslimat — FCM, garantili teslimat için kalıcı bağlantı veya öncelikli kuyruklar kullanır
  • Entegrasyon — Firebase SDK ile kurulum, google-services.json yapılandırması ve sunucu yapılandırması

FCM nedir?

Firebase Cloud Messaging (FCM), mobil cihazlara push bildirimleri ve veri mesajlarının güvenilir şekilde iletilmesini sağlayan Google'ın bulut hizmetidir. Daha önce Google Cloud Messaging (GCM) olarak bilinen FCM, Firebase ekosisteminde çapraz platform bildirimleri için birincil araç haline gelmiştir.

FCM, platforma bağlı olarak otomatik olarak en uygun teslimat kanalını seçer: Android'de kendi FCM bağlantısını kullanır; iOS'te APNS'yi (FCM ağ geçidi üzerinden) kullanır. Geliştiricinin iki farklı entegrasyon uygulaması gerekmez — FCM yönlendirmeyi halleder.

Hizmet, mesaj göndermek için birleşik bir REST API ve Admin SDK sağlar. Bu, belirli bir alıcı platformuna bağlı kalmadan sunucu tarafından bildirim gönderilmesine olanak tanır.

FCM'nin temel yetenekleri

FCM birden çok teslimat modunu destekler: belirli bir cihaza tek mesaj, konuya göre grup yayını ve koşullara göre segmentli gönderme. Zamanlanmış gönderme ve bildirim içeriğinin A/B testi de mevcuttur.

Firebase Cloud Messaging nasıl çalışır?

FCM mimarisi üç bileşene dayanır: istemci uygulaması, Firebase Connection Server ve uygulama sunucusu. İstemci, başlangıçta FCM'ye kaydolur ve benzersiz bir kayıt tokeni alır — belirli bir uygulama için cihazı tanımlayan bir dize.

Uygulama sunucusu, alıcı tokenini veya konusunu belirterek FCM REST API'sine bir istek gönderir. Firebase Connection Server, kalıcı bir XMPP bağlantısı veya HTTP isteği kullanarak mesajı iletir. Cihaz çevrimdışıysa, mesaj sıraya alınır ve bağlantı yeniden kurulduğunda iletilir.

FCM, öncelikli kuyruklar ve bir onay mekanizması kullanarak teslimatı garanti eder. Android'de mesaj kuyrukta 28 güne kadar saklanır; iOS'te 4 haftaya kadar (APNS aracılığıyla). Son kullanma tarihinden sonra mesaj bildirimsiz silinir.

FCM token yaşam döngüsü

Kayıt tokeni birkaç durumda değişebilir: uygulama verileri geri yüklenirken, yeni bir sürüme güncellenirken veya önbellek temizlenirken. Uygulama, token güncellemelerini işlemek ve sunucuyla senkronize olmak için FirebaseMessagingService.onNewToken'ı uygulamalıdır.

FCM mesaj türleri

FCM iki tür yükü destekler: notification ve data. Her tür, mesajın alıcı cihazda nasıl ve ne zaman işleneceğini belirler.

ParametreNotificationData
Otomatik görüntülemeEvet, uygulama arka plandaysaHayır, yalnızca uygulamada
İşlemeSistem/NOS — arka planda; uygulama — ön plandaHer zaman uygulamada (onMessageReceived)
Maksimum boyut4 KB4 KB
Özel anahtarlarÖnceden tanımlanmış alanlarla sınırlıHerhangi bir anahtar-değer çifti
CollapseKey gerektirirİsteğe bağlıGruplama için isteğe bağlı

Pratikte, uygulamanın onMessageReceived'de tam bildirim işleme ihtiyacı olduğunda data mesajlarının kullanılması önerilir. Notification mesajları, sistem görüntülemesinin yeterli olduğu basit senaryolar için uygundur.

FCM ve APNS: yaklaşımların karşılaştırılması

FCM ve APNS iki ana push teslimat hizmetidir. FCM çapraz platform ağ geçidi olarak çalışırken, APNS yalnızca Apple ekosistemi içindir. Temel farklılıkları mimari, sertifika gereksinimleri ve yönlendirme mekanizmalarında yatmaktadır.

  • Çapraz platform — FCM Android, iOS, Web destekler; APNS yalnızca iOS, macOS, watchOS, tvOS
  • Kimlik doğrulama — FCM Server Key veya OAuth 2.0 kullanır; APNS sertifika veya Token-based (p8 anahtarı) kullanır
  • Mesaj önceliği — FCM normal/high; APNS immediate/power-efficient consideration
  • Konular — FCM kutudan çıkar çıkmaz konu aboneliğini destekler; APNS sunucu mantığı gerektirir

FCM ve doğrudan APNS arasındaki seçim proje mimarisine bağlıdır. Çapraz platform uygulamaları için FCM en uygun seçimdir. Yalnızca iOS projeleri için, HTTP/2 API aracılığıyla doğrudan APNS ile çalışmak kabul edilebilir.

Doğrudan APNS yerine FCM ne zaman seçilmeli

FCM, proje aynı anda hem Android hem de iOS kullandığında ve ayrıca Firebase analitiği, bildirim A/B testi veya sunucu mantığı olmadan konular gerektiğinde uygundur. Doğrudan APNS, minimum bağımlılıklar ve katı teslimat gecikme gereksinimleri olan yalnızca iOS uygulamaları için tercih edilir.

Android'de FCM entegrasyonu

FCM'yi bir Android uygulamasına bağlamak için Firebase SDK'sını eklemeniz ve proje kökünde google-services.json'ı yapılandırmanız gerekir. Token kaydından sonra uygulama, FirebaseMessagingService aracılığıyla mesaj almaya hazırdır.

kotlin
// build.gradle (Module)
dependencies {
    implementation("com.google.firebase:firebase-messaging:24.1.0")
}

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

class MyFirebaseMessagingService :
    FirebaseMessagingService() {

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

    override fun onMessageReceived(message: RemoteMessage) {
        message.notification?.let {
            showNotification(it.title, it.body)
        }
    }
}

Kurulumdan sonra uygulama, ilk başlatmada otomatik olarak bir FCM tokeni alır. Bu cihaza sonraki bildirim teslimatı için tokenin uygulama sunucusuna gönderilmesi gerekir.

FCM bildirimleri için kanal ayarlama

Android 8+ üzerinde, otomatik görüntülemeli FCM bildirimi göndermeden önce bir NotificationChannel oluşturulmalıdır. FCM notification mesajları varsayılan kanal kimliğini kullanır, ancak ilk mesaj alındığında FirebaseMessagingService aracılığıyla özel bir kanal oluşturulması önerilir. Data mesajları kanal gerektirmez — uygulama bildirimi nasıl ve ne zaman göstereceğine kendisi karar verir.

iOS'te FCM entegrasyonu

iOS'te FCM, uygulama sunucusu ile APNS arasında bir aracı görevi görür. Firebase, sunucudan mesajı alır, APNS formatına sarar ve Apple ağ geçidi aracılığıyla gönderir. Geliştiricinin Firebase konsolunda bir APNS anahtarı veya sertifikası yapılandırması gerekir.

swift
import FirebaseMessaging
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current().delegate = self

        Messaging.messaging().delegate = self
        return true
    }
}

extension AppDelegate: MessagingDelegate {
    func messaging(
        _ messaging: Messaging,
        didReceiveRegistrationToken fcmToken: String?
    ) {
        UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
    }
}

iOS'te APNS kaydı eşzamansız olarak gerçekleşir. FCM SDK otomatik olarak APNS tokenini alır ve Firebase sunucusuna iletir. didReceiveRegistrationToken, APNS tokenini proje tanımlayıcısıyla birleştiren yeni bir FCM tokeni alındığında tetiklenir.

Teslimat durumunu kontrol etme

FCM, teslimatı izlemek için bir Firebase konsolu sağlar: gönderilen, alınan ve görüntülenen bildirim sayısı. Sunucu tarafında teslimat hatalarını izlemek için Firebase Cloud Functions aracılığıyla bir durum geri araması da mevcuttur. Temel metrikler: bildirim gösterimleri ve açılmaları.

FCM en iyi uygulamaları

FCM ile çalışırken, her senaryo için doğru mesaj türünü seçmek önemlidir. Otomatik görüntülemeli basit bildirimler için notification mesajları kullanın. Uygulamanın görüntülemeden önce verileri işlemesi gereken durumlar için data mesajları kullanın. Karma tür (notification + data) yalnızca veriler bildirim içeriğini değiştirmek için değil, analitik için gerektiğinde önerilir.

Tokenları merkezi olarak yönetin. Geçerli tokenları sunucuda kullanıcıya ve platforma bağlı bir tabloda saklayın. Eski token temizleme mekanizması uygulayın: NotRegistered veya InvalidRegistration hatasıyla karşılaşıldığında, tokeni veritabanından silin. Tokenlar nadiren değişir, ancak temizlikleri FCM desteğinin zorunlu bir öğesidir.

Mesajları gruplamak için çökertme anahtarları (collapseKey) kullanın. Aynı türden birden çok bildirim gönderiyorsanız (örneğin, "döviz kuru güncellemesi"), aynı collapseKey'i ayarlayın. FCM gruptan yalnızca son mesajı ileterek cihaz yükünü azaltır ve kullanıcının bildirim yağmuruna tutulmasını önler.

Teslimatı Firebase Console ve Cloud Functions aracılığıyla izleyin. FCM analitiği, gönderilen, alınan ve görüntülenen bildirim sayısını gösterir. Görüntüleme oranı %70'in altındaysa, Android'de kanal ayarlarını ve iOS'te izin ayarlarını kontrol edin. Düşük teslimat genellikle devre dışı bırakılmış kanallar veya bildirim yasaklarıyla ilgilidir. Beşinci olarak: bildirim metnini ve gönderme zamanını optimize etmek için Firebase A/B testini kullanın — bu, Firebase verilerine göre açılma dönüşümünü %15–25 oranında artırır.

Sıkça sorulan sorular

FCM ve GCM arasındaki fark nedir?

FCM, GCM'nin (Google Cloud Messaging) evrimsel güncellemesidir. FCM, Firebase Console aracılığıyla basitleştirilmiş kurulum, yerleşik analitik, konular ve Web Push desteği sunar. GCM, Nisan 2019'da resmi olarak kullanımdan kaldırılmıştır ve tüm projeler FCM'ye taşınmalıdır.

FCM üzerinden ücretsiz olarak kaç mesaj gönderilebilir?

Firebase Cloud Messaging, mesaj sayısında sınırlama olmayan ücretsiz bir hizmettir. Ödeme yalnızca Cloud Functions veya Firestore gibi diğer Firebase hizmetlerinin kullanımı için alınır. Temel bildirim teslimatı için FCM, Spark veya Blaze aboneliği gerektirmez.

FCM tokeni neden değişebilir?

FCM tokeni şu durumlarda değişir: uygulamanın yedekten geri yüklenmesi, uygulama verilerinin silinmesi, yeniden yükleme, değiştirilmiş Sender ID ile yeni bir sürüme güncelleme. Yeni tokeni sunucuya göndermek için FirebaseMessagingService'te her zaman onNewToken'ı işleyin.

FCM Çin'de çalışır mı?

Google FCM, Çin'de engellenmiştir. Çin'de bildirim teslimatı için alternatif hizmetler kullanılır: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Çapraz platform teslimatı için Getui gibi çoklu sağlayıcı hizmetleri kullanılır.

FCM'nin doğru yapılandırıldığını nasıl kontrol edebilirim?

Yerleşik Firebase konsolunu kullanın: "Cloud Messaging" — "Send Test Message" seçeneğini seçin. Bir test tokeni girin ve bir notification mesajı gönderin. Bildirim cihazda görünmelidir. Ayrıca FirebaseMessagingService.onMessageReceived günlüklerini de izleyebilirsiniz.

Özet

  • FCM, push bildirimleri ve veri teslimatı için Google'ın çapraz platform bulut hizmetidir
  • Token, hedefli mesaj teslimatı için kullanılan benzersiz bir cihaz tanımlayıcısıdır
  • Notification, arka plan modunda sistem tarafından otomatik olarak görüntülenen mesaj türüdür
  • Data, yalnızca uygulama içinde işlenen tam yüke sahip mesaj türüdür
  • Konular, sunucuda token depolamadan konu aboneliğine dayalı grup yayını mekanizmasıdır
  • APNS ağ geçidi — iOS için FCM, APNS aracılığıyla mesajları ileten bir aracı görevi görür
  • Ücretsiz — FCM, gönderilen mesaj sayısı için ücret almaz

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