Push Bildirimlerinde Konu Aboneliği — Nedir, Nasıl Çalışır ve Nasıl Yapılandırılır

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

Konu Aboneliği, cihazları ilgi alanlarına göre gruplandırmaya ve abone kategorilerinin tamamına bildirim göndermeye olanak tanıyan bir Firebase Cloud Messaging mekanizmasıdır. Binlerce bireysel Registration Token'a göndermek yerine, bir konuya tek bir mesaj göndermek yeterlidir. Firebase, 2025'e göre, Konu Aboneliği haber uygulamalarında, spor yayınlarında ve pazarlama kampanyalarında büyük ölçekli bildirim dağıtımı için kullanılır.

Önemli Noktalar

  • Konu Aboneliği — grup bildirimleri almak için bir cihazın tematik FCM kanalına aboneliği.
  • Tek bir cihaz sınırsız sayıda konuya abone olabilir.
  • Abonelik, hem istemciden hem de sunucudan FCM HTTP API aracılığıyla yönetilir.
  • İlk abonelikte konu otomatik olarak oluşturulur — ön yapılandırma gerekmez.
  • Bir konuya göndermek için, token listesi yerine konu adını belirtmek yeterlidir.

FCM'de Konu Aboneliği Nedir

Konu Aboneliği, cihazların adlandırılmış kanallara (konular) abone olduğu ve bu kanallara gönderilen mesajları aldığı bir grup push bildirimi dağıtım mekanizmasıdır. Her konu, news_sports veya weather_alerts gibi bir dize adıyla tanımlanır.

Konuların çalışma prensibi

Bir cihaz bir konuya abone olduğunda, FCM onun Registration Token'ını o konunun alıcı listesine ekler. Konuya bir mesaj gönderildiğinde, FCM otomatik olarak abone olan her cihaza bir kopya yönlendirir. Firebase, cihaz başına abonelik sayısını sınırlamaz — bir uygulama, bir kullanıcıyı aynı anda düzinelerce konuya abone yapabilir.

Konular vs bireysel gönderim

Konuların ana avantajı ölçeklenebilirliktir. Bir milyon kullanıcıya bildirim göndermek için, konu adıyla FCM'ye tek bir HTTP isteği yeterlidir. Bireysel gönderimde, bir milyon istek veya bir seferde 500 tokene kadar toplu gönderim gerekirdi. Konular ayrıca sunucu tarafı mantığını basitleştirir — her kategori için token listeleri saklamaya gerek yoktur.

ParametreBireysel gönderimKonu Aboneliği
İstek sayısıToken başına bir veya 500'e kadar topluKonu başına bir
Abonelik yönetimiSunucuda (token listesi)İstemcide veya sunucuda
Dinamik gruplarListe güncellemesi gerektirirAbonelik yoluyla otomatik
Alıcı sınırıİstek başına 500'e kadarSınırsız

Konu kullanım örnekleri

Konu Aboneliği, haber uygulamalarında içerik kategorizasyonu için yaygın olarak kullanılır — “Spor”, “Siyaset”, “Teknoloji” konularına abone olmak ilgili bildirimlerin iletilmesini sağlar. E-ticarette, konular belirli ürün kategorilerindeki indirimlerle ilgili bildirimler için kullanılır. Mesajlaşma ve sosyal ağ uygulamalarında, konular gruplardaki etkinliklerle ilgili bildirimler için kullanılır.

FCM sınırlamaları ve kotaları

Firebase, konularla çalışırken kısıtlamalar getirir. Tek bir uygulama en fazla 2000 konuya sahip olabilir. Her cihaz en fazla 2000 konuya abone olabilir. Abonelik/abonelik iptali işlemlerinin sıklığı da sınırlıdır — proje başına dakikada en fazla 3000 işlem. Bu sınırların aşılması geçici blokajla sonuçlanır. Çok sayıda konuya sahip projeler için, konular yerine koşul (condition) kullanılması önerilir — FCM, hedefleme için mantıksal ifadeleri destekler.

Konu Aboneliği Nasıl Çalışır

Konu Aboneliği süreci üç aşamadan oluşur: istemcide aboneliğin başlatılması, FCM altyapısına kayıt ve işlemin onaylanması. Başarılı abonelikten sonra cihaz, o konuya gönderilen mesajları almaya başlar.

Abonelik yaşam döngüsü

İstemci subscribeToTopic() yöntemini çağırdığında, Firebase SDK FCM sunucularına bir istek gönderir. Sunucu, işlemin geçerliliğini kontrol eder ve cihaz token'ını konunun abone listesine ekler. FCM, istemciye başarılı abonelik onayı döndürür. Bu andan itibaren, bu konuya gönderilen tüm mesajlar cihaza iletilecektir.

Otomatik konu oluşturma

Firebase konsolunda önceden bir konu oluşturmak gerekmez. İlk cihaz news_promo adlı bir konuya abone olduğunda, FCM onu otomatik olarak oluşturur. Son cihaz aboneliği iptal ederse, konu sistemde kalır ancak etkin değildir ve yeni bir abonelik olduğunda çalışmaya devam eder.

Android'de Konu Aboneliği

Android'de, konulara abone olma ve abonelikten çıkma, FirebaseMessaging SDK aracılığıyla yapılır. subscribeToTopic() ve unsubscribeFromTopic() yöntemleri, parametre olarak konu adını alır. İşlemler asenkrondur ve sonuç işleme gerektirir.

Temel konu aboneliği

Abone olmak için, hedef konu adıyla subscribeToTopic()'i çağırmak yeterlidir. Firebase SDK, ağ isteklerini ve hata durumunda yeniden denemeleri otomatik olarak yönetir. Başarılı bir şekilde Registration Token aldıktan sonra konulara abone olunması önerilir.

kotlin
class TopicSubscriber(private val context: Context) {

    fun subscribeToNewsTopic() {
        FirebaseMessaging.getInstance()
            .subscribeToTopic("news_latest")
            .addOnCompleteListener { task ->
                val msg = if (task.isSuccessful) {
                    "Subscribed to news topic"
                } else {
                    "Subscription failed"
                }
                Log.d("FCM", msg)
            }
    }

    fun unsubscribeFromNewsTopic() {
        FirebaseMessaging.getInstance()
            .unsubscribeFromTopic("news_latest")
            .addOnCompleteListener { task ->
                Log.d("FCM", "Abonelik iptal edildi: ${task.isSuccessful}")
            }
    }
}

Birden çok aboneliği yönetme

Gerçek uygulamalarda, bir kullanıcı birden çok kategoriye abone olabilir. Kolay yönetim için, abonelik durumunu sunucu tarafıyla senkronize eden bir yönetici sınıfı oluşturun. Bir kullanıcı giriş yaptığında, aboneliklerini profilinden geri yükleyin.

kotlin
class SubscriptionManager(private val context: Context) {

    private val fcm = FirebaseMessaging.getInstance()

    suspend fun syncSubscriptions(topics: List<String>) {
        topics.forEach { topic ->
            fcm.subscribeToTopic(topic).await()
        }
    }

    suspend fun removeAllSubscriptions() {
        val savedTopics = getSavedTopics()
        savedTopics.forEach { topic ->
            fcm.unsubscribeFromTopic(topic).await()
        }
    }

    private fun getSavedTopics(): List<String> {
        return listOf("news_latest", "promotions", "updates")
    }
}

iOS'ta Konu Aboneliği

iOS'ta, konu aboneliği süreci mantıksal olarak Android'le aynıdır ancak Swift Firebase Messaging API'sini kullanır. subscribe ve unsubscribe yöntemleri Messaging örneğinde çağrılır ve bunlar da asenkrondur.

iOS'ta abonelik uygulaması

Bir iOS uygulamasında bir konuya abone olmak için Messaging.subscribe() yöntemini kullanın. Firebase başlatma ve Registration Token alma işleminden sonra aboneliği çağırmak önemlidir. Apple, konulara abone olmadan önce bildirim izni istenmesini önerir.

swift
import FirebaseMessaging

class PushTopicManager {

    func subscribeToTopic(topic: String) {
        Messaging.messaging().subscribe(toTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Abonelik hatası: \(error)")
            } else {
                Log.d("FCM", "\(topic) konusuna abone olundu")
            }
        }
    }

    func unsubscribeFromTopic(topic: String) {
        Messaging.messaging().unsubscribe(fromTopic: topic) { error in
            if let error = error {
                Log.e("FCM", "Abonelik iptal hatası: \(error)")
            }
        }
    }
}

iOS aboneliklerinin özellikleri

iOS'ta, konu aboneliği Firebase'in APNs'den aldığı Registration Token'a da bağlıdır. APNs token'ı değişirse (örneğin, cihaz geri yüklemesinden sonra), Firebase abonelikleri otomatik olarak yeni token'a aktarır. Ancak, nadir durumlarda, Registration Token güncellemesinden sonra yeniden abonelik gerekebilir.

Sunucudan Abonelik Yönetimi

Sunucu tarafı abonelik yönetimi, istemci uygulamasını dahil etmeden cihazları abone yapmayı ve abonelikten çıkarmayı sağlar. Bu, yönetim, A/B testi ve backend tarafında abonelik yönetimi için kullanışlıdır.

Abonelik yönetimi için FCM HTTP API

Firebase, toplu abonelik yönetimi için bir REST API sağlar. /v1/projects/{project_id}/subscriptions uç noktası, tek bir istekte en fazla 1000 cihaza kadar abone olmaya izin verir. API, tanımlama için cihazların Registration Token'larını kullanır.

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

async function subscribeUsersToTopic(tokens, topic) {
    try {
        const response = await admin
            .messaging()
            .subscribeToTopic(tokens, topic)
        Log.info(`Success: ${response.successCount}`)
        Log.info(`Failures: ${response.failureCount}`)
    } catch (error) {
        Log.error("Abonelik hatası", error)
    }
}

Sunucu yönetimi kullanım senaryoları

Sunucu tarafı abonelik yönetimi birkaç senaryoda kullanılır. Bir kullanıcı kaydolduğunda, sunucu onu otomatik olarak temel konulara abone yapar. Web sürümünde tercihler değiştiğinde, sunucu mobil cihazdaki abonelikleri senkronize eder. Yöneticiler, hata ayıklama için test cihazlarını dahili konulara abone yapabilir. Toplu işlemler için FCM, tek bir grup tanımlayıcısı aracılığıyla bir cihaz grubunun aboneliklerini yönetmeye olanak tanıyan Instance Group yöntemini sağlar.

Abonelik durumunu izleme

Firebase, bir cihazın mevcut aboneliklerini kontrol etmek için yerleşik bir API sağlamaz. Geliştiricilerin, sunucu tarafında kendi abonelik veritabanlarını tutmaları önerilir. Her uygulama başlatıldığında, istemci etkin konuların listesini göndererek aboneliklerini sunucuyla senkronize eder. Bu, senkronizasyon bozukluğunu belirlemeye ve gerekirse abonelikleri geri yüklemeye yardımcı olur. Denetim için Firebase Cloud Functions günlüklerini kullanın — her subscribe/unsubscribe işlemi günlüğe kaydedilebilir.

Sıkça Sorulan Sorular

Bir Firebase projesinde kaç konu oluşturulabilir?

Maksimum konu sayısı uygulama başına 2000'dir. Daha fazlası gerekiyorsa, cihaz gruplarını veya token'larla bireysel gönderimi değerlendirin.

Bir cihazın hangi konulara abone olduğunu nasıl öğrenebilirim?

Firebase, bir cihazın abonelik listesini almak için doğrudan bir API sağlamaz. Geliştiricilerin abonelik durumunu kendi sunucularında saklamaları ve istemciyle senkronize etmeleri önerilir.

Var olmayan bir konudan abonelik iptal edildiğinde ne olur?

FCM başarılı bir sonuç döndürür. Firebase, var olmayan bir konudan abonelik iptalini no-op işlemi olarak ele alır — hata oluşmaz, durum değişmez.

Firebase konsolundan bir konuya bildirim gönderilebilir mi?

Evet, Firebase konsolunda Cloud Messaging bölümünde, bir konuyu hedef kitle olarak seçebilir ve web arayüzü üzerinden test veya üretim bildirimi gönderebilirsiniz.

Bir konu aboneliği ne kadar hızlı etkinleşir?

Genellikle, abonelik birkaç saniye içinde etkinleşir. Ancak, nadir durumlarda, FCM sunucuları arasında yayılmadan kaynaklanan gecikme 30–60 saniyeye kadar çıkabilir.

Özet

  • Konu Aboneliği, Firebase Cloud Messaging aracılığıyla grup push bildirimi dağıtım mekanizmasıdır.
  • Abonelik, istemciden subscribeToTopic() (Android) veya subscribe() (iOS) yöntemleri kullanılarak yapılır.
  • Tek bir cihaz aynı anda 2000 konuya kadar abone olabilir.
  • Sunucu API'si, tek bir istekte en fazla 1000 cihazın aboneliklerini yönetmeye olanak tanır.
  • Konu, ilk abonelikte otomatik olarak oluşturulur ve ön yapılandırma gerektirmez.
  • Büyük kitlelerle çalışırken Konu Aboneliği bireysel gönderime tercih edilir.
  • Kritik bildirimler için, teslimatı garanti altına almak üzere konuları bireysel gönderimle birleştirin.

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