1. Giriş
Hedefler
Bu codelab'de, FCM konularını kullanarak uygulama örneklerinizin çeşitli alt gruplarına push mesajları yayınlayabilmeniz için çok platformlu uygulamanızı nasıl izleyeceğinizi öğreneceksiniz.
İşlem tamamlandığında, bu alt grupları yönetmek ve alt gruplar üzerinden çok noktalı push mesajları göndermek için FCM altyapısından yararlanabilirsiniz.
Konulara Genel Bakış
Konular, FCM altyapısı tarafından desteklenen ve uygulama örneklerinizin alt gruplarına mesajlarla ulaşmanızı sağlayan bir yöntemdir.
FCM, mesaj göndermek ve bu konulara abonelikleri sürdürmek için API'ler sağlar. Bir uygulama örneğini konuyla ilişkilendirme ve ilişkilendirmeyi kaldırma işlemine sırasıyla abone olma ve abonelikten çıkma adı verilir.
Konular, herkese açık içeriklerde kullanılmalıdır. Örneğin, hava durumu güncellemeleriyle ilgili mesajlar. Kullanıcıya duyarlı mesajlar göndermek istiyorsanız mesajları birden fazla cihazda çoklu yayınlamak için Firebase Admin SDK'sını kullanın.
Konulara dayalı çoklu yayın, işleme hızı için optimize edilmiştir.
Neler öğreneceksiniz?
- Kullanıcıları mobil uygulamadan konulara abone etme (ve abonelikten çıkarma)
- Konuları kullanarak çoklu yayın push mesajları gönderme
- Konu koşullarını kullanarak bir konu kombinasyonuna nasıl mesaj gönderilir?
- Konu aboneliklerini sunucu tarafında yönetme ve toplu abonelik ile abonelikten çıkma işlemlerini gerçekleştirme
Ne oluşturacaksınız?
- Konulara abone olan/abonelikten çıkan ve konulara gönderilen mesajları alan bir Android uygulaması.
- FCM API'leri aracılığıyla konu mesajları göndermek için kullanılacak Firebase Admin SDK'yı kullanan bir sunucu tarafı entegrasyonu.
Gerekenler
- Chrome gibi istediğiniz bir tarayıcı.
- Java uygulamaları geliştirmek için IntelliJ IDEA IDE.
- Yükleme sırasında Gradle desteğini etkinleştirdiğinizden emin olun.
- Android uygulamaları geliştirmek için Android Studio IDE.
- Android uygulamasını çalıştırmak için bir cihaz Aşağıdakilerden biri:
- Android emülatörü. (Android Studio'da kurulum gerektirir.)
- Bilgisayarınıza bağlı ve geliştirici moduna ayarlanmış fiziksel bir Android cihaz.
- Firebase projenizi oluşturmak ve yönetmek için bir Google Hesabı.
2. Hazırlanma
Kodu alma
GitHub deposunu komut satırından klonlayın:
git clone https://github.com/firebase/quickstart-android.git fcm-codelab
Örnek kod, fcm-codelab dizinine klonlanır.
cd fcm-codelab
Bu codelab'in başlangıç uygulaması, fcm-topics-codelab dalının messaging dizinindedir. Başlangıç koduna ulaşmak için aşağıdaki adımları uygulayın. StockNewsApp ve StockNewsServer olmak üzere iki dizin içerir. Birincisi başlangıç Android uygulamasını, ikincisi ise başlangıç sunucu tarafı kodunu içerir.
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
Bu codelab'in tamamlanmış sürümü messaging/fcm-topics-codelab/completed dizinine yerleştirilir.
Firebase projesi oluşturma
- Google Hesabınızı kullanarak Firebase konsolunda oturum açın.
- Yeni bir proje oluşturmak için düğmeyi tıklayın ve ardından bir proje adı girin (örneğin,
StockNews).
- Devam'ı tıklayın.
- İstenirse Firebase şartlarını inceleyip kabul edin ve Devam'ı tıklayın.
- (İsteğe bağlı) Firebase konsolunda yapay zeka yardımını etkinleştirin ("Firebase'de Gemini" olarak adlandırılır).
- Bu codelab için Google Analytics'e ihtiyacınız yoktur. Bu nedenle, Google Analytics seçeneğini devre dışı bırakın.
- Proje oluştur'u tıklayın, projenizin hazırlanmasını bekleyin ve ardından Devam'ı tıklayın.
Tebrikler! Firebase projenizi yeni oluşturdunuz.
3. Platforma özel Firebase uygulaması yapılandırması
Firebase desteğini etkinleştirmek için gereken kod değişikliklerinin çoğu, üzerinde çalıştığınız projeye zaten eklenmiştir. Ancak mobil platformlar için destek eklemek istiyorsanız:
- İstediğiniz platformu Firebase projesine kaydedin.
- Platforma özgü yapılandırma dosyasını indirip koda ekleyin.
Bu codelab'de Android Firebase uygulaması ekleyeceğiz.
Android'i yapılandırma
- Firebase Console'da, Ayarlar dişlisindeki sol gezinme çubuğunun üst kısmında Proje Ayarları'nı seçin ve Genel sayfasındaki Uygulamalarınız bölümünde Android simgesini tıklayın.
Aşağıdaki iletişim kutusunu görmeniz gerekir : 
- Sağlanması gereken önemli değer, Android paket adıdır.
com.ticker.stocknewsolarak ayarlayın.- Burada sağlanan paket adı, başlangıç StockNewsApp kodunuzun
AndroidManifest.xmlbölümünde sağlananla aynı olmalıdır. Bu ayarı bulmak veya değiştirmek için aşağıdaki adımları uygulayın:- StockNewsApp dizininde
app/src/main/AndroidManifest.xmldosyasını açın. manifestöğesinde,packageözelliğinin dize değerini bulun. Bu değer, Android paket adıdır.
- StockNewsApp dizininde
- Burada sağlanan paket adı, başlangıç StockNewsApp kodunuzun
- Firebase iletişim kutusunda, kopyalanan paket adını Android paket adı alanına yapıştırın.
- Bu uygulama yayınlanmayacağından bu codelab için Debug signing certificate SHA-1'e ihtiyacınız yoktur. Bu alanı boş bırakın.
- Register App'i (Uygulamayı Kaydet) tıklayın.
- Firebase konsolunda devam ederek yapılandırma dosyasını indirme talimatlarını uygulayın
google-services.json. - Diğer her şey başlangıç uygulaması kodunda zaten yapılandırılmış olduğundan kalan kurulum adımlarını atlayabilirsiniz. Uygulamanız Firebase Console'un ana sayfasında listelenir.
- Yeni indirdiğiniz
google-services.jsondosyasınımessaging/fcm-topics-codelab/starter/StockNewsApp/appdizinine kopyalayın.
4. Uygulamanızı derleyip çalıştırın
Uygulamanız üzerinde çalışmaya başlamaya hazırsınız. Öncelikle uygulamayı derleyip çalıştırın.
Başlangıç uygulamasını içe aktarma
Android Studio'yu başlatın ve başlangıç kodu dizininden messaging/fcm-topics-codelab/starter/StockNewsApp dosyasını içe aktarın.
Proje yüklendikten sonra Git'in tüm yerel değişikliklerinizi izlemediğine dair bir uyarı da görebilirsiniz. Bu durumda sağ üstteki "Yoksay"ı veya "X"i tıklayabilirsiniz. (Değişiklikleri Git deposuna geri göndermezsiniz.)
Proje penceresinin sol üst köşesinde, Android görünümündeyken aşağıdaki resme benzer bir şey görmeniz gerekir. (Proje görünümündeyseniz aynı şeyi görmek için projeyi genişletmeniz gerekir.)

Android Studio'nun projeyi ilk kez arka planda derlemesinin birkaç saniye sürebileceğini lütfen unutmayın. Bu süre boyunca Android Studio'nun alt kısmındaki durum çubuğunda bir yükleme simgesi görürsünüz:

Kod değişiklikleri yapmadan önce bu işlemin tamamlanmasını beklemenizi öneririz. Bu işlem, Android Studio'nun gerekli tüm bileşenleri çekmesine olanak tanır.
Ayrıca, "Dil değişikliklerinin geçerli olması için yeniden yükle?" gibi bir istem alırsanız "Evet"i seçin.
Emülatör Kurulumu
Android emülatörü kurma konusunda yardıma ihtiyacınız varsa Uygulamanızı çalıştırma başlıklı makaleyi inceleyin.
Android uygulama başlangıç kodunu anlama
- Başlangıç kodu, minimum işlevselliğe ve kullanıcı arayüzüne sahip, hafif bir Android uygulamasıdır.
app/build.gradledosyasına firebase-messaging SDK'sına bağımlılık zaten eklenmiş olmalıdır.

AndroidManifest.xmliçindeMESSAGING_EVENTgeri çağırma işleyicisi zaten eklenmiştir.- Bu işleyici,
StockNewsMessagingService.java, Firebase Cloud Messaging ile ilgili çeşitli işlevler sağlayanFirebaseMessagingServicesınıfını genişletir. Daha fazla bilgi edinmek için FirebaseMessagingService dokümanlarına göz atın.
* FCM kayıt jetonu oluşturulduğunda veya yenilendiğinde "onNewToken" işlevi çağrılır. Daha fazla bilgi için [Jeton oluşturma işlemini izleme](https://firebase.google.com/docs/cloud-messaging/android/client#monitor-token-generation) başlıklı makaleyi inceleyin. * Bir mesaj alındığında ve uygulama ön planda olduğunda `onMessageReceived` işlevi çağrılır. Şu anda yalnızca alınan mesajı kaydeder. * Arka planda ve ön planda ileti teslimi ile işleme arasındaki farklar hakkında daha fazla bilgi edinmek için [Android uygulamasında ileti alma](https://firebase.google.com/docs/cloud-messaging/android/receive) başlıklı makaleyi inceleyin. - Bu işleyici,
- Ayrıca,
AndroidManifest.xmliçindeStockNewsApplicationadlı bir AndroidApplicationsınıfı da sağlanır.
* Bu sınıf, uygulama başlatıldığında oluşturulan ilk sınıf olur. * `StockNewsApplication` sınıfının `onCreate` işlevine bir FCM kayıt jetonu oluşturma çağrısı eklenir. Geçerli bir FCM kayıt jetonu oluşturur ve bunu günlüğe kaydeder. MainActivity.java, Stok Kategorisi seçeneklerini gösterenRecyclerViewöğesini ekler.SubscriptionAdapter.java, Stok Kategorisi seçim ekranını çizenRecyclerView.Adapteröğesini uygular.- Her stok kategorisinin bir adı ve yanında bir abonelik açma/kapatma düğmesi bulunur.
- Açma/kapatma düğmesinin değiştirilmesi, FCM konu aboneliği/abonelikten çıkma çağrısı yapmalıdır.
- Bu çağrıları sonraki bölümlerde uygulayacaksınız.
model/StockCategories.javasınıfı, tüm Stok Kategorileri'nin ve bunlarla ilişkili konu adlarının listesini içerir.

Başlangıç uygulamasını çalıştırma
- Android cihazınızı bilgisayarınıza bağlayın veya bir emülatör başlatın.
- Üst araç çubuğunda hedef Android cihazınızı veya emülatörünüzü seçip çalıştır düğmesine basın.

- Uygulama kullanıcı arayüzü aşağıdaki gibi görünür:

- Uygulama, bir FCM kayıt jetonu oluşturur ve bunu günlüğe kaydeder. Ancak uygulama kullanıcı arayüzünde herhangi bir değişiklik olmayacak.
- FCM Kayıt Jetonu'nu kopyalayıp kaydedin. Bu jeton sonraki adımlarda kullanılacaktır.

5. Test Mesajı Gönderme
Artık son adımda ayarladığınız uygulama örneğine test mesajı göndermeye hazırsınız.
Başlangıç sunucusu kodunu içe aktarma
IntelliJ IDEA'yı başlatın ve messaging/fcm-topics-codelab/starter/StockNewsServer projesini açın.
Sol gezinme çubuğunuzdaki proje görünümü aşağıdaki gibi olmalıdır:

IntelliJ IDEA'nın, gerekli bağımlılıkları çekme de dahil olmak üzere projenizi oluşturmasının birkaç dakika sürebileceğini unutmayın.
Sunucu başlangıç kodunu anlama
- Sunucu başlangıç kodu, Gradle tabanlı bir Java projesidir.
build.gradledosyasına firebase-admin SDK bağımlılığı zaten eklenmiş olmalıdır. Bu SDK, çeşitli FCM mesajı gönderme işlevlerine erişim sağlar.

- Son olarak, iki sınıf vardır:
FcmSender.java: Bu sınıfta aşağıdaki not yöntemleri bulunur:initFirebaseSDK: firebase-admin SDK'sını başlatır.sendMessageToFcmRegistrationToken: FCM kayıt jetonuna mesaj göndermesendMessageToFcmTopic: Bir FCM konu başlığına mesaj göndermesendMessageToFcmTopicCondition: Bir FCM konu koşuluna mesaj gönderme
FcmSubscriptionManager.java: Bu sınıf, konu aboneliklerinin sunucu tarafında yönetilmesine olanak tanıyan yöntemler içerir.initFirebaseSDK: firebase-admin SDK'sını başlatır.subscribeFcmRegistrationTokensToTopic: FCM tescil jetonlarını bir FCM konusuna abone edin.unsubscribeFcmRegistrationTokensFromTopic: FCM kayıt jetonlarının FCM konusundan kaydını siler.
Sunucu kodunu ayarlama
- İlk olarak, firebase-admin SDK'nın FCM API'lerine yapılan çağrıları yetkilendirmesine olanak tanıyan bir Firebase hizmet hesabı oluşturmamız gerekiyor.
- Firebase Console'a gidin, soldaki gezinme çubuğunda Projeye Genel Bakış'ın yanındaki dişli simgesini tıklayın ve Proje ayarları'nı seçin.

- Ayarlar sayfasında Hizmet hesapları'nı seçin ve Hizmet hesabı oluştur'u tıklayın.

- Şimdi Yeni özel anahtar oluştur düğmesini tıklayın. Anahtar dosyanızın otomatik olarak indirilmesi başlar.
- Anahtar dosyasını
service-account.jsonolarak yeniden adlandırın vemessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resourcesklasörüne kopyalayın. - Hem
FcmSender.javahem deFcmSubscriptionManager.java, aşağıdaki kodu kullanarakservice-account.jsondosyasını sınıf yolundan yükler.
- Firebase Console'a gidin, soldaki gezinme çubuğunda Projeye Genel Bakış'ın yanındaki dişli simgesini tıklayın ve Proje ayarları'nı seçin.
- Bu noktada sunucu kodu hazırdır. Üst menü çubuğundan Run Build -> Build Project'i (Derlemeyi Çalıştır -> Projeyi Derle) seçin.
Test Mesajı Gönderme
FcmSender.javabölümündesendMessageToFcmRegistrationTokenişlevini bulun ve Başlangıç uygulamasını çalıştırma bölümünden kopyaladığınız FCM kayıt jetonunuregistrationTokenalanına ekleyin.mainişlevinde yalnızcasendMessageToFcmRegistrationTokenişlevinin yorumunu kaldırın ve kodu yürütmek için çalıştır'ı tıklayın.- FCM Registration Token'ın
messagenesnesininTokenalanına nasıl ayarlandığını inceleyin. - Ayrıca,
FirebaseMessagingarayüzününsendAPI'sini nasıl kullandığımıza dikkat edin.
- FCM Registration Token'ın

- Bu işlem, önceki adımda ayarladığınız uygulama örneğine bir mesaj gönderir.
- Uygulama örneği ön planda olduğunda mesaj içeriğinin kaydedildiğini görmeniz gerekir.

- Uygulama örneği arka planda olduğunda ise bildirim tepsisinde mesajın göründüğünü fark edersiniz.

Harika! Bir uygulama örneğine mesaj göndermek için Firebase Admin SDK'sını kullandınız. Firebase Admin SDK'yı sunucunuzda kullanma hakkında daha fazla bilgi edinin.
6. Konu aboneliğini / abonelikten çıkmayı uygulama
Bu adımda, Android uygulamasının Stok Kategorisi açma/kapatma düğmesinde konu aboneliği ve abonelikten çıkma işlemlerini uygulayacaksınız.
Bir uygulama kullanıcısı belirli bir stok kategorisinin anahtarını açtığında, konu aboneliği veya abonelikten çıkma çağrısı yapılır.
İnceleme kodu
- Android uygulama kodundaki
SubscriptionAdapter.javasınıfına gidin veRecyclerViewViewHoldersınıfını bulun.

- Sınıf oluşturucu,
setOnCheckedChangeListenerkullanarak abonelik açma/kapatma düğmesi için bir işleyici ayarlar. - Açma/kapatma düğmesine bağlı olarak, abone olma ve abonelikten çıkma işlemleri sırasıyla
subscribeToStockCategoryveunsubscribeFromStockCategoryyöntemleri çağrılarak gerçekleştirilir. setDatayöntemi, ViewHolder'ı uygun Stok Kategorisi ile bağlamak için RecyclerView Adapter'ınonBindViewHoldertarafından çağrılır.
Konu aboneliğini uygulama
subscribeToStockCategoryyönteminde,FirebaseMessagingnesnesininsubscribeToTopicAPI'sine yapılan çağrıyı uygulayacaksınız. Kod şu şekilde görünebilir:
void subscribeToStockCategory() {
// Making call to FCM for subscribing to the topic for stockCategory
FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
unused -> {
// Subscribing action successful
Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
Toast.LENGTH_SHORT).show();
});
}
Konu listesinden çıkma özelliğini uygulama
- Benzer şekilde, else koşulunda
unsubscribeFromTopicAPI'ye yapılan çağrıyı uygulayacaksınız. Aşağıdakine benzer bir mesaj:
void unsubscribeFromStockCategory() {
// Making call to FCM for unsubscribing from the topic for stockCategory
FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
.addOnSuccessListener(unused -> {
// Unsubscribing action successful
Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
Toast.LENGTH_SHORT).show();
});
}
Deneyelim
- Uygulamayı çalıştırın ve Abone Olma ile Abonelikten Çıkma işlemlerini gerçekleştirmek için Stok Kategorisi seçeneklerini etkinleştirin. Şöyle bir şey görürsünüz:
Abone ol | Aboneliği iptal et |
|
|
7. İlk konu mesajınızı gönderme
Bu adımda, FCM konu mesajı göndermek için sunucu tarafı kodu uygulayacaksınız.
Konu mesajı göndermek için sunucu tarafı entegrasyonunu uygulama
- Sunucu kodunda
FcmSender.javabölümüne gidin vesendMessageToFcmTopicadlı yöntemi bulun.

- İlk satırda, mesajı göndermek istediğiniz FCM konusunu belirtin.
/topics/<Topic Name>biçiminde bir dizedir. Örneğin,/topics/Technology.
- Sonraki satırlarda yeni bir
messagenesnesi oluşturun (sendMessageToFcmRegistrationTokenişlevinde tanımlanana benzer).- Fark,
messagenesnesininTokenalanı yerineTopicalanının ayarlanmasıdır.
- Fark,
Message message = Message.builder()
.putData("FOOTECH", "$1000")
.setNotification(
Notification.builder()
.setTitle("Investor confidence in Tech Stocks growing")
.setBody("Foo Tech leading the way in stock growth for Tech sector.")
.build())
.setTopic(topicName)
.build();
- Şimdi mesajı göndermek için
FirebaseMessagingörneğine aramayı ekleyin (sendMessageToFcmRegistrationTokenişlevinde yapılan gönderme aramasıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
mainişlevini güncelleyin ve yalnızcasendMessageToFcmTopicişlevini çağırmayı etkinleştirin.

İleti gönderme ve alındığını doğrulama
- Konu mesajını göndermeden önce uygulama örneğinizin, göndermek istediğiniz konuya abone olduğundan emin olun.
- Bu işlem, ilgili açma/kapatma düğmesiyle yapılabilir. Örneğin:

- Artık
FcmSender.javaişlevininmainişlevini kullanarak konu mesajınızı gönderebilirsiniz. - Daha önce olduğu gibi, uygulama örneğinde ileti alındığını gözlemleyebilirsiniz.
- Ön planda çalışan uygulama örneği

- Arka plandaki uygulama örneği

- Bonus: Gönderdiğiniz konunun e-posta listesinden çıkmayı ve mesajı yeniden göndermeyi deneyin. İletinin uygulama örneğine teslim edilmediğini görürsünüz.
8. İlk konu koşulu mesajınızı gönderme
Konu koşulu özelliği, daha etkileyici bir kitle tanımı sağlamanıza olanak tanıyarak bir konu kombinasyonuna mesaj göndermenizi sağlar.
Örneğin, StockNews uygulamamızda Teknoloji veya Otomotiv konularına abone olan bir grup uygulama örneğine mesaj gönderme olasılığını ele alalım. Örneğin, Waymo ile ilgili önemli bir olay yaşandığında bu durum ortaya çıkabilir.
Topics, aşağıdaki operatörleri kullanarak kombinasyonunuzu Boole ifadesi şeklinde belirtmenize olanak tanır.
- && : Mantıksal VE. Örneğin,
'Technology' in topics && 'Automotive' in topics- Yalnızca hem Teknoloji hem de Otomotiv Konuları'na abone olan uygulama örneklerini hedefler. - || : Mantıksal VEYA. Örneğin,
'Technology' in topics || 'Automotive' in topics- Teknoloji veya Otomotiv konularına abone olan uygulama örneklerini hedefler. - () : Gruplandırma için kullanılan parantezler. Örneğin,
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)yalnızca Teknoloji'ye ve Otomotiv veya Enerji konularına abone olan uygulama örneklerini hedefler.
Bu işlevi kullanmak için gönderme isteklerini oluşturma hakkında daha fazla bilgi edinin.
Konu koşulu mesajı göndermek için sunucu tarafı entegrasyonunu uygulama
- Sunucu koduna geri dönün,
FcmSender.javaiçine gidin vesendMessageToFcmTopicConditionadlı yöntemi bulun.

- İlk satırda,
topicConditiondeğişkeni için mesajı göndermek istediğiniz konu koşulunu belirtin. Bu ayarı şu şekilde belirleyebilirsiniz:'Technology' in topics && 'Automotive' in topics. - Sonraki satırlarda yeni bir
messagenesnesi oluşturun (sendMessageToFcmTopicişlevinde tanımlanana benzer).- Fark, nesnenin
Topicalanını ayarlamak yerineConditionalanını ayarlamanızdır.
- Fark, nesnenin
Message message = Message.builder()
.putData("FOOCAR", "$500")
.setNotification(
Notification.builder()
.setTitle("Foo Car shows strong Q2 results")
.setBody("Foo Car crosses 1B miles. Stocks rally.")
.build())
.setCondition(topicCondition)
.build();
- Şimdi mesajı göndermek için
FirebaseMessagingörneğine aramayı ekleyin (sendMessageToFcmTopicişlevinde yapılan gönderme aramasıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
mainişlevini güncelleyin ve yalnızcasendMessageToFcmTopicConditionişlevini çağırmayı etkinleştirin.

Mesajı gönderme ve alındığını doğrulama
- Konu mesajını göndermeden önce, uygulama örneğini hem Teknoloji hem de Otomotiv konularına abone ederek uygulama örneğinizin belirtilen konu koşulunu karşıladığından emin olun.
- Artık
FcmSender.javaişlevininmainişlevini kullanarak konu mesajınızı gönderebilirsiniz. - Eskisi gibi, uygulama örneğinde mesaj alındığını gözlemleyebilirsiniz.
- Ön planda çalışan uygulama örneği

- Arka plandaki uygulama örneği

- Bonus: Artık Teknoloji konusunun e-posta listesinden çıkabilir ve konu koşulu mesajını yeniden gönderebilirsiniz. Uygulama örneğinin mesajı almadığını gözlemlemeniz gerekir.
9. Özet
Şimdiye kadar öğrendiklerinizi kısaca özetleyelim.
- Bir uygulama örneğinden konu aboneliği başlatma / abonelikten çıkma
- Konuya mesaj gönderme ve abone olunan uygulama örneklerinde alındığını doğrulama.
- Bir konuya mesaj gönderme koşulu ve koşulu karşılayan bir uygulama örneğinde alındığını doğrulama.
Sonraki bölümde, istemci tarafında çağrı başlatmaya gerek kalmadan uygulama örneklerini konulara nasıl abone olabileceğinizi / abonelikten çıkarabileceğinizi öğreneceksiniz.

10. Konu aboneliklerini sunucu tarafından yönetme
Şimdiye kadar bu codelab'de tüm konu abonelikleri ve abonelikten çıkma çağrıları bir uygulama örneğinden başlatılıyordu.
Ancak bazı kullanım alanlarında konu aboneliklerini sunucu tarafından yönetmek isteyebilirsiniz. Örneğin, mevcut kullanıcı tabanınızın bir alt grubunu uygulama yayınlanmasını beklemeden yeni bir konuya abone etmek isteyebilirsiniz.
Bu bölümde, sunucu tarafında çağrı yaparak bir FCM kayıt jetonu grubunu bir konuya abone etmek ve abonelikten çıkarmak için Firebase Admin SDK'yı nasıl kullanacağınızı öğreneceksiniz.
FCM kayıt jetonlarının FCM konusuna sunucu tarafı aboneliğini uygulama
- Sunucu kodunda
FcmSubscriptionManager.javasınıfına gidin.subscribeFcmRegistrationTokensToTopicadlı yöntemi bulun.subscribeToTopicAPI'ye yapılan çağrıyı burada uygulayacaksınız.

- Uygulama örneğini Energy konusuna abone edelim. Bunu yapmak için öncelikle aşağıdaki iki alanla ilgili verileri sağlayın:
registrationTokens: Konu abonelikleri oluşturmak istediğiniz FCM kayıt jetonlarını temsil eden, virgülle ayrılmış bir dizeler listesi.topicName: Enerji konusunun konu adı, yani/topics/Energy.
- Sonraki birkaç satırda, aşağıdaki gibi bir çağrı uygulayın:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
registrationTokens, topicName);
- Bazı üst düzey sonuç istatistikleri için
TopicManagementResponsebölümünü inceleyebilirsiniz. Örneğin,getSuccessCountkullanarak başarıyla oluşturulan konu aboneliklerinin sayısını yazdırma.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Son olarak,
mainişlevinde yalnızcasubscribeFcmRegistrationTokensToTopicişlevine yapılan çağrıları etkinleştirin.
Abonelik oluşturma ve konu mesajı gönderme
- Bu noktada, konu aboneliğini oluşturmaya ve konuya mesaj göndermeye hazırsınız.
FcmSubscriptionManager.javasınıfınınmainişlevini yürütün. Bu işlem, konu aboneliği oluşturur.- Şimdi de mesajı gönderecek kodu ayarlayın. Öncekiyle benzer şekilde,
FcmSender.javabölümündesendMessageToFcmTopicişlevini bulun.topicNamekonusunu Enerji olarak ayarlayın./topics/Energy.Messagenesnesi oluşturun vesetTopickullanarak konuyu hedefleyin.- Son olarak,
mainyöntemini yalnızcasendMessageToFcmTopicişlevini etkinleştirecek şekilde güncelleyin.
FcmSender.javaöğesininmainişlevini yürütün. Bu işlem, mesajı uygulama örneğinize gönderir. Mesajı uygulamanızda aşağıdaki şekilde gözlemleyebilirsiniz.- Ön planda çalışan uygulama örneği

- Arka plandaki uygulama örneği

FCM kayıt jetonlarının FCM konusundan sunucu tarafında abonelikten çıkarılmasını uygulama
- Sunucu tarafında konu e-posta listesinden çıkma işlemleri için bu
unsubscribeFromTopicAPI'yi kullanın. İlgili koduFcmSubscriptionManager.javasınıfınınunsubscribeFcmRegistrationTokensFromTopicişlevine eklersiniz.

- Sunucu tarafı e-posta listesinden çıkma kodunu uygulama ve konu mesajı göndererek etkisini doğrulama alıştırması size bırakılmıştır.
11. Tebrikler
Tebrikler, FCM konularını kullanarak uygulama örneklerinizin alt gruplarına çoklu yayın iletileri göndermeyi başardınız. Bu sayede, kullanıcılarınıza alakalı içeriklerle zamanında ulaşma olanağınız kolaylaşır.

Sırada ne var?
Codelab'inizi tamamladığınıza göre aşağıdaki kılavuzları kullanarak diğer platformlarla ilgili konuları da deneyebilirsiniz:

