1. Giriş
Hedefler
Bu codelab'de, FCM konularını kullanarak uygulama örneklerinizin çeşitli alt gruplarına çoklu yayın push mesajları gönderebilmeniz için çok platformlu uygulamanızı nasıl izleyeceğinizi öğreneceksiniz.
İşlem tamamlandığında, bu alt grupları yönetmek ve alt gruplar üzerinden çoklu yayın push mesajları göndermek için FCM altyapısından yararlanabilirsiniz.
Konulara Genel Bakış
Konular, uygulama örneklerinizin alt gruplarına mesajlarla ulaşmak için FCM altyapısı tarafından desteklenen 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çerikler için 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 çok noktalı push mesajları gönderme
- Konu koşullarını kullanarak bir konu kombinasyonuna nasıl ileti gönderilir?
- Konu aboneliklerini sunucu tarafında yönetme ve toplu abonelik ile abonelikten çıkma işlemleri yapma
Ne oluşturacaksınız?
- Konulara abone olan/abonelikten çıkan ve konulara gönderilen mesajları alan bir Android uygulaması.
- Firebase Admin SDK'yı kullanan bir sunucu tarafı entegrasyonu. Bu entegrasyon, FCM API'leri aracılığıyla konu mesajları göndermek için kullanılır.
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
dizininde yer alır. 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.stocknews
olarak ayarlayın.- Burada sağlanan paket adı, başlangıç StockNewsApp kodunuzun
AndroidManifest.xml
bölümünde sağlananla aynı olmalıdır. Bu ayarı bulmak veya değiştirmek istiyorsanız aşağıdaki adımları uygulayın:- StockNewsApp dizininde
app/src/main/AndroidManifest.xml
dosyası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.json
dosyasınımessaging/fcm-topics-codelab/starter/StockNewsApp/app
dizinine 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 "Yoksay"ı veya sağ üstteki "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 görüntü görürsünüz. (Proje görünümündeyken aynı şeyi görmek için projeyi genişletmeniz gerekir.)
Android Studio'nun projeyi ilk kez arka planda derlemesinin birkaç saniye sürebileceğini 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 basit bir Android uygulamasıdır.
app/build.gradle
dosyasına firebase-messaging SDK'sına bağımlılık zaten eklenmiş olmalıdır.
AndroidManifest.xml
içindeMESSAGING_EVENT
geri arama işleyicisi zaten eklenmiş.- Bu işleyici,
StockNewsMessagingService.java
, çeşitli Firebase Cloud Messaging ile ilgili işlevler sağlayanFirebaseMessagingService
sınıfını genişletir. Daha fazla bilgi edinmek için FirebaseMessagingService dokümanlarına göz atın.
onNewToken
işlevi, FCM kayıt jetonu oluşturulduğunda veya yenilendiğinde çağrılır. Daha fazla bilgi için Jeton oluşturmayı izleme başlıklı makaleyi inceleyin.onMessageReceived
işlevi, bir mesaj alındığında ve uygulama ön planda olduğunda çağrılır. Şu anda yalnızca alınan mesajı kaydeder.- Arka plan ve ön plan mesajı teslimi ile işleme arasındaki farklar hakkında daha fazla bilgi edinmek için Android uygulamasında mesaj alma başlıklı makaleyi inceleyin.
- Bu işleyici,
- Ayrıca,
AndroidManifest.xml
içindeStockNewsApplication
adlı bir AndroidApplication
sınıfı da sağlanır.- Bu sınıf, uygulama başlatıldığında oluşturulan ilk sınıf olacaktır.
StockNewsApplication
sınıfınınonCreate
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.java
sınıfı, tüm Stok Kategorileri'nin ve 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 görünmelidir:
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.gradle
dosyası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önderme.sendMessageToFcmTopic
: FCM konusuna mesaj gönderme.sendMessageToFcmTopicCondition
: 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 konu başlığından 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, sol gezinme çubuğunda Project Overview'ın yanındaki dişli simgesini tıklayın ve Project settings'i (Proje ayarları) 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ıkladığınızda anahtar dosyanız otomatik olarak indirilmeye başlar.
- Anahtar dosyasını
service-account.json
olarak yeniden adlandırın vemessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
klasörüne kopyalayın. - Hem
FcmSender.java
hem deFcmSubscriptionManager.java
, aşağıdaki kodu kullanarakservice-account.json
dosyasını sınıf yolundan yükler.
- Firebase Console'a gidin, sol gezinme çubuğunda Project Overview'ın yanındaki dişli simgesini tıklayın ve Project settings'i (Proje ayarları) seçin.
- Bu noktada sunucu kodu hazırdır. Üst menü çubuğundan Run Build -> Build Project'i (Derleme Çalıştır -> Proje Derle) seçin.
Test Mesajı Gönderme
FcmSender.java
bölümündesendMessageToFcmRegistrationToken
işlevini bulun ve Başlangıç uygulamasını çalıştırma bölümünden kopyaladığınız FCM kayıt jetonunuregistrationToken
alanına ekleyin.main
işlevinde yalnızcasendMessageToFcmRegistrationToken
işlevinin yorumunu kaldırın ve kodu yürütmek için çalıştır'ı tıklayın.- FCM Registration Token'ın
message
nesnesininToken
alanına nasıl ayarlandığını gözlemleyin. - Ayrıca,
FirebaseMessaging
arayüzününsend
API'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örürsünüz.
- Uygulama örneği arka planda olduğunda ise bildirim tepsisinde mesajın göründüğünü görürsünüz.
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.java
sınıfına gidin veSubscriptionAdapter.java
sınıfını bulun.RecyclerViewViewHolder
- Sınıf oluşturucu,
setOnCheckedChangeListener
kullanarak 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
subscribeToStockCategory
veunsubscribeFromStockCategory
yöntemleri çağrılarak gerçekleştirilir. setData
yöntemi, ViewHolder'ı uygun Stok Kategorisi ile bağlamak için RecyclerView Adapter'ınonBindViewHolder
tarafından çağrılır.
Konu aboneliğini uygulama
subscribeToStockCategory
yönteminde,FirebaseMessaging
nesnesininsubscribeToTopic
API'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
unsubscribeFromTopic
API'ye yapılan çağrıyı uygulayacaksınız. Aşağıdakine benzer bir mesaj görürsünüz:
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. Bu, aşağıdaki gibi görünür:
Abone ol | Abonelikten çık |
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.java
bölümüne gidin vesendMessageToFcmTopic
adlı 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
message
nesnesi oluşturun (sendMessageToFcmRegistrationToken
işlevinde tanımlanana benzer).- Fark,
message
nesnesininToken
alanı yerineTopic
alanı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 (sendMessageToFcmRegistrationToken
işlevinde yapılan gönderme aramasıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
main
işlevini güncelleyin ve yalnızcasendMessageToFcmTopic
işlevinin çağrılmasını etkinleştirin.
İleti gönderme ve alındı belgesini 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.java
işlevininmain
işlevini kullanarak konu mesajınızı gönderebilirsiniz. - Daha önce olduğu gibi, uygulama örneğinde ileti alındığını gözlemleyebilirsiniz.
- Uygulama örneği ön planda
- 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.
Konular, 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.java
bölümüne gidin vesendMessageToFcmTopicCondition
adlı yöntemi bulun.
- İlk satırda,
topicCondition
değişkeni için mesajı göndermek istediğiniz konu koşulunu belirtin. Şu şekilde ayarlayabilirsiniz:'Technology' in topics && 'Automotive' in topics
. - Sonraki satırlarda yeni bir
message
nesnesi oluşturun (sendMessageToFcmTopic
işlevinde tanımlanana benzer).- Fark, nesnenin
Topic
alanını ayarlamak yerineCondition
alanı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 (sendMessageToFcmTopic
işlevinde yapılan gönderme aramasıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
main
işlevini güncelleyin ve yalnızcasendMessageToFcmTopicCondition
işlevinin çağrılmasını 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.java
işlevininmain
işlevini kullanarak konu mesajınızı gönderebilirsiniz. - Daha önce olduğu gibi, uygulama örneğinde mesaj alındığını gözlemleyebilirsiniz.
- Uygulama örneği ön planda
- 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 hızlıca özetleyelim.
- Bir uygulama örneğinden konu aboneliği başlatma / abonelikten çıkma
- Konuya ileti gönderme ve abone olunan uygulama örneklerinde alındığını doğrulama.
- Bir konuya ileti 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
Bu codelab'de şimdiye kadar tüm konu abonelikleri ve abonelikten çıkma çağrıları bir uygulama örneğinden başlatıldı.
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ılar 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.java
sınıfına gidin.subscribeFcmRegistrationTokensToTopic
adlı yöntemi bulun.subscribeToTopic
API'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
TopicManagementResponse
simgesini inceleyebilirsiniz. Örneğin,getSuccessCount
kullanarak başarıyla oluşturulan konu aboneliklerinin sayısını yazdırma.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Son olarak,
main
işlevinde yalnızcasubscribeFcmRegistrationTokensToTopic
iş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.java
sınıfınınmain
iş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.java
bölümündesendMessageToFcmTopic
işlevini bulun.topicName
değerini Energy konusu olarak ayarlayın. Örneğin:/topics/Energy
.Message
nesnesi oluşturun vesetTopic
kullanarak konuyu hedefleyin.- Son olarak,
main
yöntemini yalnızcasendMessageToFcmTopic
işlevini etkinleştirecek şekilde güncelleyin.
FcmSender.java
öğesininmain
işlevini yürütün. Bu işlem, mesajı uygulama örneğinize gönderir. Mesajı uygulamanızda aşağıdaki şekilde gözlemleyebilirsiniz.- Uygulama örneği ön planda
- Arka plandaki uygulama örneği
FCM Kayıt Jetonlarının FCM konu başlığından sunucu tarafında abonelikten çıkma işlemini uygulama
- Sunucu tarafında konu e-posta listesinden çıkma işlemleri için bu
unsubscribeFromTopic
API'yi kullanın. İlgili koduFcmSubscriptionManager.java
sınıfınınunsubscribeFcmRegistrationTokensFromTopic
iş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şmanı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: