1. Giriş
Hedefler
Bu codelab'de, FCM konularını kullanarak push mesajlarını uygulama örneklerinizin çeşitli alt gruplarına çok noktaya yayın yapabilmek için çoklu platform uygulamanızı nasıl ayarlayacağınızı öğreneceksiniz.
Bitirdiğinizde, bu alt grupları ve alt gruplar üzerinden çok noktaya yayın push mesajlarını yönetmek için FCM altyapısından yararlanabileceksiniz.
Konulara Genel Bakış
Konular, uygulama örneklerinizin alt gruplarına mesajlarla ulaşmanın FCM altyapısı tarafından desteklenen bir yoludur.
FCM, API'lerin mesaj göndermesini ve bu konulara yönelik abonelikleri sürdürmesini sağlar. Bir uygulama örneğini konuyla ilişkilendirme ve ayırma işlemine sırasıyla abone olma ve abonelikten çıkma adı verilir
Konular halka açık içerik 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 çok cihaza yayınlamak için Firebase Admin SDK'yı kullanın.
Konu tabanlı çok noktaya yayın, verim için optimize edilmiştir.
Ne öğreneceksin
- Kullanıcıların bir mobil uygulamadaki konulara abone olma (ve abonelikten çıkma) işlemleri.
- Konuları kullanarak çok noktaya yayın push mesajları nasıl gönderilir?
- Konu koşullarını kullanarak konuların bir kombinasyonuna nasıl mesaj gönderilir?
- Sunucu tarafında konu abonelikleri nasıl yönetilir, toplu abonelikler ve abonelik iptalleri nasıl yapılır.
Ne inşa edeceksin
- Konulara abone olan/abonelikten çıkan ve konulara gönderildiğinde mesaj alan bir Android Uygulaması.
- Konu mesajlarını FCM API'leri aracılığıyla göndermek için kullanılacak, Firebase Yönetici SDK'sını kullanan sunucu tarafı entegrasyonu.
İhtiyacınız olan şey
- Chrome gibi seçtiğiniz bir tarayıcı.
- Java uygulamaları geliştirmek için IntelliJ IDEA IDE.
- Kurulum 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ıracak bir cihaz. Bir digeri:
- 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. Kurulum
Kodu al
GitHub deposunu komut satırından kopyalayın:
git clone https://github.com/firebase/quickstart-android.git fcm-codelab
Örnek kod fcm-codelab
dizinine kopyalanacaktır.
cd fcm-codelab
Bu codelab'in başlangıç uygulaması fcm-topics-codelab
şubesinin messaging
dizinindedir. Başlangıç koduna ulaşmak için aşağıdaki adımları izleyin. StockNewsApp
ve StockNewsServer
olmak üzere iki dizin içerir. İlki, başlangıç Android Uygulamasını içerir ve ikincisi, başlangıç sunucusunun yan 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
- Firebase konsolunda Proje ekle'yi tıklayın, Firebase projesine StockNews adını verin ve devam et'i tıklayın. Not: Firebase projenizin Proje Kimliğini unutmayın (veya tercih ettiğiniz Proje Kimliğini ayarlamak için Düzenle simgesini tıklayın).
- Google Analytics'i etkinleştirmeyi atlayabilirsiniz. Bu codelab'in amaçları açısından buna ihtiyacınız yoktur. Devam'ı tıklayın.
- Proje oluştur'u tıklayın.
Tebrikler! Firebase projenizi yeni oluşturdunuz. Artık konsola girmek için proje adına tıklayabilirsiniz.
3. Platforma özel Firebase uygulama 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 platformlara destek eklemek için şunları yapmanız gerekir:
- İstediğiniz platformu Firebase projesine kaydedin
- Platforma özel yapılandırma dosyasını indirin ve koda ekleyin.
Bu codelab'in amaçları doğrultusunda bir Android Firebase uygulaması ekleyeceğiz.
Android'i yapılandır
- Firebase Konsolu'nda, Ayarlar çarkındaki sol gezinme çubuğunun üst kısmındaki Proje Ayarları'nı seçin ve Genel sayfasında Uygulamalarınız altında Android simgesini tıklayın.
Aşağıdaki iletişim kutusunu görmelisiniz:
- Sağlanması gereken önemli değer Android paket adıdır .
com.ticker.stocknews
olarak ayarlayın.- Burada sağlanan paket adı, StockNewsApp başlangıç kodunuzun
AndroidManifest.xml
dosyasında sağlanan adla aynı olmalıdır. Bunu bulmak veya değiştirmek istiyorsanız şu adımları izleyin:- StockNewsApp dizininde
app/src/main/AndroidManifest.xml
dosyasını açın. -
manifest
öğesindepackage
niteliğinin dize değerini bulun. Bu değer Android paket adıdır.
- StockNewsApp dizininde
- Burada sağlanan paket adı, StockNewsApp başlangıç 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 Hata Ayıklama imzalama sertifikası SHA-1'e ihtiyacınız yok. Bunu boş bırakın.
- Uygulamayı Kaydet'i tıklayın.
- Firebase Konsolunda devam ederek
google-services.json
yapılandırma dosyasını indirmek için talimatları izleyin. - Diğer her şey başlangıç uygulama kodunda zaten yapılandırılmış olduğundan, kalan kurulum adımlarını atlayabilirsiniz. Uygulamanızı Firebase Konsolunun ana sayfasında listelenmiş olarak bulacaksınız.
-
google-services.json
dosyasını (az önce indirdiğiniz)messaging/fcm-topics-codelab/starter/StockNewsApp/app
dizinine kopyalayın.
4. Uygulamanızı oluşturun ve çalıştırın
Uygulamanız üzerinde çalışmaya gerçekten başlamaya hazırsınız! Öncelikle uygulamayı derleyin ve çalıştırın.
Başlangıç uygulamasını içe aktar
Android Studio'yu başlatın ve messaging/fcm-topics-codelab/starter/StockNewsApp
dosyasını başlangıç kodu dizininden içe aktarın.
Proje yüklendikten sonra Git'in tüm yerel değişikliklerinizi takip etmediğine dair bir uyarı da görebilirsiniz; " Yoksay " veya sağ üstteki " X " işaretine tıklayabilirsiniz. (Herhangi bir değişikliği Git deposuna geri göndermeyeceksiniz.)
Android görünümündeyseniz proje penceresinin sol üst köşesinde aşağıdaki resme benzer bir şey görmelisiniz. ( Proje görünümündeyseniz aynı şeyi görmek için projeyi genişletmeniz gerekir)
Android Studio'nun projeyi arka planda ilk kez derlemesinin birkaç saniye sürebileceğini lütfen unutmayın. Bu süre zarfında Android Studio'nun alt kısmındaki durum çubuğunda bir döndürücü göreceksiniz:
Kod değişiklikleri yapmadan önce bu işlemin bitmesini beklemenizi öneririz. Bu, Android Studio'nun gerekli tüm bileşenleri almasına olanak tanıyacaktır.
Ayrıca, "Dil değişikliklerinin etkili olması için yeniden yüklensin mi?" diyen bir uyarı alırsanız veya benzer bir şey için "Evet"i seçin.
Emülatör Kurulumu
Android öykünücüsü kurma konusunda yardıma ihtiyacınız varsa Uygulamanızı çalıştırma makalesine bakın.
Android Uygulaması başlangıç kodunu anlayın
- Başlangıç kodu, minimum işlevselliğe ve kullanıcı arayüzüne sahip hafif bir Android Uygulamasıdır.
- Firebase mesajlaşma SDK'sına bağımlılık
app/build.gradle
dosyasına zaten eklenmiştir.
-
AndroidManifest.xml
dosyasına birMESSAGING_EVENT
geri çağırma işleyicisi zaten eklenmiştir.-
StockNewsMessagingService.java
adlı bu işleyici, Firebase Cloud Messaging ile ilgili çeşitli işlevler sağlayanFirebaseMessagingService
sınıfını genişletir. Daha fazla bilgi edinmek için FirebaseMessagingService belgelerine bakın.
- FCM Kayıt Belirteci oluşturulduğunda veya yenilendiğinde
onNewToken
işlevi çağrılır. Daha fazla bilgi için Belirteç oluşturmayı izleme konusuna bakın. -
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ı günlüğe kaydediyor.- Arka planda ve ön planda ileti teslimi ve işlenmesi arasındaki farklar hakkında daha fazla bilgi edinmek için Android uygulamasında ileti alma konusuna bakın.
-
- Ayrıca
AndroidManifest.xml
dosyasındaStockNewsApplication
adında bir AndroidApplication
sınıfı da sağlanmaktadır.- Bu sınıf, Uygulama başlatıldığında başlatılacak ilk sınıf olacaktır.
-
StockNewsApplication
sınıfınınonCreate
işlevine, bir FCM Kayıt Belirteci oluşturma çağrısı eklenir. Geçerli bir FCM Kayıt Belirteci oluşturacak ve bunu günlüğe kaydedecektir.
-
MainActivity.java
, Stok Kategorisi seçeneklerini görüntüleyenRecyclerView
ekler. -
SubscriptionAdapter.java
Stok Kategorisi seçim ekranını çizenRecyclerView.Adapter
uygular.- Her Hisse Senedi Kategorisinin bir adı ve yanında bir abonelik düğmesi bulunur.
- Geçişin değiştirilmesi, bir FCM konu aboneliği / abonelikten çıkma çağrısı yapmalıdır.
- Bu çağrıları ilerleyen bölümlerde uygulayacaksınız.
-
model/StockCategories.java
sınıfı, tüm Hisse Senedi Kategorilerinin ve bunlarla ilişkili konu adlarının bir listesini içerir.
Başlangıç uygulamasını çalıştırın
- 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çin ve çalıştır düğmesine basın.
- Uygulama kullanıcı arayüzü aşağıdaki gibi görünecektir:
- Uygulama bir FCM Kayıt Belirteci oluşturacak ve bunu günlüğe kaydedecektir. Ancak Uygulama arayüzünde hiçbir şey değişmeyecek.
- Sonraki adımlarda kullanılacağı için FCM Kayıt Simgesini kopyalayıp kaydedin.
5. Test Mesajı Gönderin
Artık son adımda kurduğunuz uygulama örneğine bir test mesajı göndermeye hazırsınız.
Başlangıç sunucusu kodunu içe aktarın
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ü şunun gibi görünmelidir:
Gerekli bağımlılıkların çekilmesi de dahil olmak üzere IntellIj IDEA'nın projenizi oluşturmasının birkaç dakika sürebileceğini unutmayın.
Sunucu başlangıç kodunu anlayın
- Sunucu başlangıç kodu Gradle tabanlı bir Java projesidir.
-
build.gradle
dosyası zaten kendisine eklenen firebase-admin SDK'sına bağımlı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ıf aşağıdaki not yöntemlerini içerir:-
initFirebaseSDK
: Firebase-admin SDK'sını başlatır. -
sendMessageToFcmRegistrationToken
: FCM Kayıt Simgesine bir mesaj gönderin. -
sendMessageToFcmTopic
: FCM konusuna mesaj gönderin. -
sendMessageToFcmTopicCondition
: FCM konu koşuluna bir mesaj gönderin.
-
-
FcmSubscriptionManager.java
: Bu sınıf, konu aboneliklerinin sunucu tarafından yönetilmesine izin veren yöntemleri içerir.-
initFirebaseSDK
: Firebase-admin SDK'sını başlatır. -
subscribeFcmRegistrationTokensToTopic
: FCM Kayıt Jetonlarını bir FCM konusuna abone olun. -
unsubscribeFcmRegistrationTokensFromTopic
: Bir FCM konusundan FCM Kayıt Belirteçlerinin aboneliğini iptal edin.
-
-
Sunucu kodunu ayarlama
- Öncelikle, firebase-admin SDK'sının FCM API'lerine çağrıları yetkilendirmesine olanak tanıyan bir Firebase Hizmet Hesabı kurmamız gerekiyor.
- Firebase Konsolu'na gidin, sol gezinme çubuğunda Projeye Genel Bakış'ın yanındaki dişli çark 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üğmesine tıklayın; anahtar dosyanızın otomatik olarak indirilmesi başlayacaktır.
- 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.
- Bu noktada sunucu kodu hazırdır. Üst menü çubuğundan Build -> Build Project komutunu çalıştırın.
Test Mesajı Gönderme
-
FcmSender.java
sendMessageToFcmRegistrationToken
işlevini bulun ve Başlatıcı uygulamasını çalıştır bölümünden kopyaladığınız FCM kayıt belirteciniregistrationToken
alanına ekleyin. -
main
işlevde, yalnızcasendMessageToFcmRegistrationToken
işlevinin açıklamasını kaldırın ve kodu çalıştırmak için çalıştır'a tıklayın.- FCM Kayıt Belirtecinin
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 Kayıt Belirtecinin
- Bu, önceki adımda kurduğunuz uygulama örneğine bir mesaj göndermelidir.
- Uygulama örneği ön planda olduğunda, günlüğe kaydedilen mesaj içeriğini görmelisiniz.
- Uygulama örneği arka planda olduğunda, mesajın bildirim tepsisinde göründüğünü görürsünüz.
Harika, bir uygulama örneğine mesaj göndermek için Firebase Yönetici SDK'sını kullandınız. Sunucunuzda Firebase Admin SDK'yı kullanma hakkında daha fazla bilgi edinin.
6. Konu Aboneliğini/Aboneliği İptal Etmeyi Uygulayın
Bu adımda, Android Uygulamasının Hisse Senedi Kategorisi geçiş düğmesinde konu aboneliği ve abonelikten çıkma işlemlerini uygulayacaksınız.
Bir Uygulama kullanıcısı belirli bir Hisse Senedi Kategorisi için geçiş yaptığında, bir konu aboneliği veya abonelikten çıkma çağrısı yapılacaktır.
Kodu incele
- Android Uygulama kodundaki
SubscriptionAdapter.java
sınıfına gidin veRecyclerViewViewHolder
sınıfını bulun.
- Sınıf yapıcısı,
setOnCheckedChangeListener
kullanarak abonelik geçişi için bir dinleyici ayarlar. - Anahtar geçişine bağlı olarak abone olma ve abonelikten çıkma eylemleri, sırasıyla
subscribeToStockCategory
veunsubscribeFromStockCategory
yöntemleri çağrılarak gerçekleştirilir. -
setData
yöntemi, ViewHolder'ı uygun Stok Kategorisine bağlamak için RecyclerView Adapter'ınonBindViewHolder
tarafından çağrılır.
Konu aboneliğini uygulayın
-
subscribeToStockCategory
yönteminde,FirebaseMessaging
nesnesininsubscribeToTopic
API'sine yönelik çağrıyı uygulayacaksınız. Kod şöyle 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 aboneliğini iptal etme işlemini uygulayın
- Benzer şekilde, else koşulunda
unsubscribeFromTopic
API çağrısını uygulayacaksınız. Aşağıdakilere benzer bir şey:
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(); }); }
Haydi deneyelim
- Uygulamayı çalıştırın ve Abone Ol ve Abonelikten Çık eylemlerini yürütmek için Hisse Senedi Kategorisi seçeneklerini değiştirin. Bunun gibi bir şeye benzeyecek:
Abone | Abonelikten çık |
7. İlk Konu Mesajınızı Gönderme
Bu adımda, bir FCM konu mesajı göndermek için sunucu tarafı kodunu uygulayacaksınız.
Konu mesajını göndermek için sunucu tarafı entegrasyonunu uygulayın
- Sunucu kodunda
FcmSender.java
atlayın vesendMessageToFcmTopic
adlı yöntemi bulun.
- İlk satırda mesajı göndermek istediğiniz FCM Konusunu belirtin.
- Bu, şu biçimde bir dizedir:
/topics/<Topic Name>
. Örneğin,/topics/Technology
.
- Bu, şu biçimde bir dizedir:
- Sonraki satırlarda yeni bir
message
nesnesi oluşturun (sendMessageToFcmRegistrationToken
işlevinde tanımlanana benzer).- Aradaki fark,
message
nesnesininToken
alanını ayarlamak yerineTopic
alanını ayarlamanız olacaktır.
- Aradaki 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 çağrıyı
FirebaseMessaging
örneğine ekleyin (sendMessageToFcmRegistrationToken
işlevinde yapılan gönderme çağrısıyla aynı).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
main
işlevi güncelleyin ve yalnızcasendMessageToFcmTopic
işlevine çağrıyı etkinleştirin.
Mesaj gönder ve alındıyı doğrula
- Konu mesajını göndermeden önce öncelikle uygulama örneğinizin göndermek istediğiniz konuya abone olduğundan emin olun.
- Bu, ilgili düğmenin çevrilmesiyle yapılabilir. Örneğin:
- Artık
FcmSender.java
main
işlevini çalıştırarak konu mesajınızı gönderebilirsiniz. - Daha önce olduğu gibi, uygulama örneğinde mesaj alındığını gözlemleyebilmelisiniz.
- Ön planda uygulama örneği
- Arka planda uygulama örneği
- Bonus: Gönderdiğiniz konunun aboneliğinden çıkıp mesajı yeniden göndermeyi deneyin. Mesajın uygulama örneğine teslim edilmediğini gözlemleyeceksiniz.
8. İlk Konu Durumu Mesajınızın Gönderilmesi
Konu koşulu özelliği, daha anlamlı hedef kitle tanımı sağlamanıza olanak tanıyan konuların bir kombinasyonuna mesaj göndermenize olanak tanır.
Örneğin StockNews Uygulamamızda, Teknoloji veya Otomotiv konularına abone olan bir grup uygulama örneğine mesaj gönderme olasılığını düşünün. Örneğin Waymo'nun dahil olduğu kayda değer bir olay söz konusu olduğunda böyle bir durum ortaya çıkabilir.
Konular, aşağıdaki operatörleri kullanarak kombinasyonunuzu boole ifadesi biçiminde ifade etmenize 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. - () : Gruplama için parantezler. Örneğin,
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)
- Yalnızca Teknoloji ve Otomotiv veya Enerji konularına abone olan uygulama örneklerini hedefler.
Bu işlevselliği kullanmak için gönderme isteklerinin nasıl oluşturulacağı hakkında daha fazla bilgi edinin.
Konu durumu mesajını göndermek için sunucu tarafı entegrasyonunu uygulayın
- Sunucu koduna geri döndüğünüzde
FcmSender.java
geçin vesendMessageToFcmTopicCondition
adlı yöntemi bulun.
- İlk satırda,
topicCondition
değişkeni için mesajı göndermek istediğiniz konu koşulunu belirtin. Bunu şu şekilde ayarlayabilirsiniz:'Technology' in topics && 'Automotive' in topics
. - Sonraki satırlarda yeni bir
message
nesnesi oluşturun (sendMessageToFcmTopic
işlevinde tanımlanana benzer).- Aradaki fark, nesnenin
Topic
alanını ayarlamak yerineCondition
alanını ayarlamanız olacaktır.
- Aradaki 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 çağrıyı
FirebaseMessaging
örneğine ekleyin (sendMessageToFcmTopic
işlevinde yapılan gönderme çağrısıyla aynı).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
main
işlevi güncelleyin ve yalnızcasendMessageToFcmTopicCondition
işlevine çağrıyı etkinleştirin.
Mesajı gönderin ve alındıyı doğrulayın
- 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
main
işlevini çalıştırarak konu mesajınızı gönderebilirsiniz. - Daha önce olduğu gibi, uygulama örneğinde mesaj alındığını gözlemleyebilmelisiniz.
- Ön planda uygulama örneği
- Arka planda uygulama örneği
- Bonus: Artık Teknoloji konusu aboneliğinden çıkabilir ve konu durumu mesajını yeniden gönderebilirsiniz. Mesajın uygulama örneği tarafından alınmadığını gözlemlemelisiniz.
9. Özet
Bu noktaya kadar öğrendiklerinizi kısaca özetleyelim.
- Bir uygulama örneğinden konu aboneliği/abonelikten çıkma nasıl başlatılır.
- Konuya bir mesaj gönderme ve abone olunan uygulama örneklerinin alındığını doğrulama.
- Bir konuya koşula mesaj gönderme ve koşulu karşılayan bir uygulama örneğindeki alındının doğrulanması.
Bir sonraki bölümde, istemci tarafından çağrı başlatmaya gerek kalmadan uygulama örneklerine konulara nasıl abone olabileceğinizi/abonelikten çıkabileceğinizi öğreneceksiniz.
10. Konu Aboneliklerini Sunucu Tarafından Yönetin
Ş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 durumlarında konu aboneliklerini Sunucu Tarafından yönetmek isteyebilirsiniz. Örneğin, mevcut kullanıcı tabanınızın bir alt grubunu, uygulamanın kullanıma sunulmasını beklemeden yeni bir konuya abone olmak isteyebilirsiniz.
Bu bölümde, sunucu tarafından çağrılar yaparak bir konuya yönelik bir grup FCM Kayıt Jetonuna abone olmak ve aboneliğinizi iptal etmek için Firebase Yönetici SDK'sını nasıl kullanacağınızı öğreneceksiniz.
FCM Kayıt Jetonlarının sunucu tarafı aboneliğini FCM konusuna uygulayın
- Sunucu kodunda
FcmSubscriptionManager.java
sınıfına geçin.subscribeFcmRegistrationTokensToTopic
adlı yöntemi bulun. BuradasubscribeToTopic
API çağrısını uygulayacaksınız.
- Uygulama örneğini Enerji konusuna abone edelim. Bunu yapmak için öncelikle aşağıdaki iki alan için veri sağlayın:
-
registrationTokens
: konu abonelikleri oluşturmak istediğiniz FCM Kayıt Belirteçlerini temsil eden dizelerin virgülle ayrılmış listesi. -
topicName
: Enerji konusunun konu adı, yani/topics/Energy
.
-
- Sonraki birkaç satırda çağrıyı şu satırlar boyunca uygulayın:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- Bazı üst düzey sonuç istatistikleri için
TopicManagementResponse
inceleyebilirsiniz. Başarılı bir şekilde oluşturulan konu aboneliklerinin sayısınıgetSuccessCount
kullanarak yazdırmak gibi.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Son olarak,
main
işlevde yalnızcasubscribeFcmRegistrationTokensToTopic
işlevine çağrıları etkinleştirin.
Abonelik oluştur ve konu mesajı gönder
- Bu noktada konu aboneliğini oluşturmaya ve ona mesaj göndermeye hazırsınız.
-
FcmSubscriptionManager.java
sınıfınınmain
işlevini yürütün. Bu bir konu aboneliği oluşturacaktır. - Şimdi mesajı göndermek için kodu ayarlayın. Daha önce olduğu gibi,
-
FcmSender.java
dosyasındasendMessageToFcmTopic
işlevini bulun. -
topicName
Enerji konusuna ayarlayın, yani/topics/Energy
. - Bir
Message
nesnesi oluşturun ve bunusetTopic
kullanarak konuya hedefleyin. - Son olarak,
main
yöntemi yalnızcasendMessageToFcmTopic
işlevini etkinleştirecek şekilde güncelleyin.
-
-
FcmSender.java
main
işlevini yürütün. Bu, mesajı uygulama örneğinize gönderecektir ve bunu uygulamanızda aşağıdaki gibi gözlemleyebilirsiniz.- Ön planda uygulama örneği
- Arka planda uygulama örneği
FCM Kayıt Jetonlarının sunucu tarafı aboneliğini FCM konusuna kaldırmayı uygulayın
- Sunucu tarafı konu aboneliklerini iptal etmek için bu
unsubscribeFromTopic
API'sini kullanın.FcmSubscriptionManager.java
sınıfınınunsubscribeFcmRegistrationTokensFromTopic
fonksiyonuna ilgili kodu ekleyeceksiniz.
- Sunucu tarafı abonelikten çıkma kodunu uygulamak ve konu mesajı göndererek etkisini doğrulamak size bir alıştırma olarak bırakılmıştır.
11. Tebrikler
Tebrikler, uygulama örneklerinizin alt gruplarına çok noktaya yayın mesajları göndermek için FCM konularını başarıyla kullandınız. Bu, alakalı içerikle kullanıcılarınıza zamanında ulaşma yeteneğinizi basitleştirmenize yardımcı olacaktır.
Sıradaki ne?
Artık codelab'inizi tamamladığınıza göre, aşağıdaki kılavuzları kullanarak diğer platformlara yönelik konuları denemeyi düşünün: