1. Giriş
Hedefler
Bu kod laboratuvarında, FCM konularını kullanarak uygulama örneklerinizin çeşitli alt gruplarına anında iletme mesajlarını çok noktaya yayınlayabilmeniz için çoklu platform uygulamanızı nasıl kullanacağınızı öğreneceksiniz.
İşiniz bittiğinde, bu alt grupları ve ayrıca 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, mesaj göndermek ve bu konulara yönelik abonelikleri sürdürmek için API'ler sağlar. Bir uygulama örneğini konuyla ilişkilendirme ve ayırma işlemine sırasıyla abone ol ve abonelikten çık denir.
Konular, herkese 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 birden çok cihaz üzerinden çok noktaya yayın mesajları için Firebase Admin SDK'yı kullanın.
Konu tabanlı çok noktaya yayın, aktarım hızı için optimize edilmiştir.
ne öğreneceksin
- Kullanıcılar bir mobil uygulamadan konulara nasıl abone olunur (ve abonelikten nasıl çıkılır).
- Konuları kullanarak çok noktaya yayın push mesajları nasıl gönderilir.
- Konu koşullarını kullanarak bir konu kombinasyonuna nasıl mesaj gönderilir.
- Sunucu tarafında konu abonelikleri nasıl yönetilir ve toplu abonelikler ve abonelik iptalleri nasıl yapılır.
Ne inşa edeceksin
- Konulara abone olan/aboneliği iptal eden ve konulara gönderildiğinde mesaj alan bir Android Uygulaması.
- FCM API'leri aracılığıyla konu mesajları göndermek için kullanılacak olan Firebase Admin SDK'yı kullanan bir sunucu tarafı entegrasyonu.
Neye ihtiyacın olacak
- 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ırmak için 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 için başlangıç uygulaması fcm-topics-codelab
şubesinin 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. İlki, başlangıç Android Uygulamasını içerir ve ikincisi, başlangıç sunucusu yan koduna sahiptir.
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ştirilmiştir.
Bir Firebase projesi oluşturun
- Firebase konsolunda Proje ekle'ye tıklayın, Firebase projesine StockNews adını verin ve devam'a tıklayın. Not: Firebase projenizin Proje Kimliğini unutmayın (veya tercih ettiğiniz Proje Kimliğini ayarlamak için Düzenle simgesine tıklayın).
- Google Analytics'i etkinleştirmeyi atlayabilirsiniz. Bu codelab'in amaçları doğrultusunda buna ihtiyacınız yok. Devam'ı tıklayın.
- Proje oluştur'u tıklayın.
Tebrikler! Az önce Firebase projenizi oluşturdunuz. Şimdi, konsola girmek için proje adına tıklayabilirsiniz.
3. Platforma özgü Firebase uygulama yapılandırması
Firebase desteğini etkinleştirmek için gereken kod değişikliklerinin çoğu, üzerinde çalışmakta olduğunuz projede zaten kontrol edilmiştir. Ancak, mobil platform desteği eklemek için şunları yapmanız gerekir:
- İstenen platformu Firebase projesine kaydedin
- Platforma özgü yapılandırma dosyasını indirin ve koda ekleyin.
Bu kod laboratuvarının amaçları doğrultusunda, bir Android Firebase uygulaması ekleyeceğiz.
Android'i yapılandırın
- Firebase Konsolunda , Ayarlar çarkında sol gezinti çubuğunun üst kısmındaki Proje Ayarları'nı seçin ve Genel sayfasındaki Uygulamalarınız altındaki 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ı, başlangıç StockNewsApp kodunuzun
AndroidManifest.xml
dosyasında sağlanan adla aynı olmalıdır. Bulmak veya değiştirmek isterseniz, şu adımları izleyin:- StockNewsApp dizininde,
app/src/main/AndroidManifest.xml
dosyasını açın. -
manifest
öğesinde,package
niteliğ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 kod laboratuvarı için Hata Ayıklama imzalama sertifikası SHA-1'e ihtiyacınız yok çünkü bu uygulama yayınlanmayacak. 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. - Geri kalan her şey başlangıç uygulaması 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 gerçekten çalışmaya başlamaya hazırsınız! İlk olarak, uygulamayı oluşturun ve çalıştırın.
Başlangıç uygulamasını içe aktarın
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 takip etmediğine dair bir uyarı da görebilirsiniz, " Yoksay " veya sağ üstteki " X " işaretini 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 resimdeki gibi 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ı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 çekmesine izin verecektir.
Ayrıca, "Dil değişikliklerinin geçerli olması için yeniden yüklensin mi?" veya benzer bir şey için "Evet"i seçin.
Emülatör Kurulumu
Bir Android emülatörü kurma konusunda yardıma ihtiyacınız varsa Uygulamanızı çalıştırın 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.
-
app/build.gradle
dosyasına firebase-mesajlaşma SDK'sına bir bağımlılık zaten eklenmiştir.
-
AndroidManifest.xml
birMESSAGING_EVENT
geri arama işleyicisi zaten eklenmiştir.- Bu işleyici
StockNewsMessagingService.java
, Firebase Bulut Mesajlaşma ile ilgili çeşitli işlevler sağlayanFirebaseMessagingService
sınıfını genişletir. Daha fazla bilgi edinmek için FirebaseMessagingService belgelerine bakın.
-
onNewToken
işlevi, FCM Kayıt Simgesi oluşturulduğunda veya yenilendiğinde çağrılır. Daha fazla bilgi için Belirteç oluşturmayı izleme bölümüne 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 kaydeder.- Arka planda ve ön planda mesaj teslimi ve işleme arasındaki farklar hakkında daha fazla bilgi edinmek için Android uygulamasında mesaj alma konusuna bakın.
- Bu işleyici
- Ayrıca,
AndroidManifest.xml
dosyasındaStockNewsApplication
adlı bir AndroidApplication
sınıfı da sağlanır.- Bu sınıf, Uygulama başladığında örneklenen ilk sınıf olacaktır.
-
StockNewsApplication
sınıfınınonCreate
işlevinde, bir FCM Kayıt Simgesi oluşturma çağrısı eklenir. Geçerli bir FCM Kayıt Jetonu oluşturacak ve 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 Stok Kategorisinin bir adı ve yanında bir abonelik anahtarı vardır.
- Geçişin değiştirilmesi, bir FCM konu aboneliği / abonelikten çıkma çağrısı yapmalıdır.
- İlerleyen bölümlerde bu çağrıları hayata geçireceksiniz.
-
model/StockCategories.java
sınıfı, tüm Hazır Kategorilerin 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 Jetonu oluşturacak ve günlüğe kaydedecektir. Ancak Uygulama kullanıcı arayüzünde hiçbir şey değişmeyecek.
- Sonraki adımlarda kullanılacağı için FCM Kayıt Simgesini kopyalayın ve kaydedin.
5. Bir 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ü şöyle görünmelidir:
Intellij IDEA'nın gerekli bağımlılıkları çekmek de dahil olmak üzere 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ı, kendisine eklenen firebase-admin SDK'sına zaten 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, yani:
-
FcmSender.java
: Bu sınıf aşağıdaki not yöntemlerini içerir:-
initFirebaseSDK
: Firebase-admin SDK'yı başlatır. -
sendMessageToFcmRegistrationToken
: bir FCM Kayıt Simgesine bir mesaj gönderin. -
sendMessageToFcmTopic
: bir FCM konusuna mesaj gönderin. -
sendMessageToFcmTopicCondition
: bir FCM konu koşuluna bir mesaj gönderin.
-
-
FcmSubscriptionManager.java
: Bu sınıf, konu aboneliklerini sunucu tarafından yönetmeye izin veren yöntemleri içerir.-
initFirebaseSDK
: Firebase-admin SDK'yı başlatır. -
subscribeFcmRegistrationTokensToTopic
: FCM Kayıt Belirteçlerini 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'nın FCM API'lerine yapılan çağrıları yetkilendirmesine izin veren bir Firebase Hizmet Hesabı oluşturmamız gerekiyor.
- Firebase Konsolu'na gidin, sol gezinme çubuğundaki 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'a tıklayın.
- Şimdi Yeni özel anahtar oluştur düğmesine tıklayın ve anahtar dosyanızın otomatik olarak indirilmesi başlayacaktır.
- Anahtar dosyasını
service-account.json
olarak yeniden adlandırın ve onumessaging/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 Konsolu'na gidin, sol gezinme çubuğundaki 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 Build -> Build Project'i çalıştırın.
Test Mesajı Gönderme
-
FcmSender.java
sendMessageToFcmRegistrationToken
işlevini bulun ve Run the Starter app bölümünden kopyaladığınız FCM kayıt belirteciniregistrationToken
alanına ekleyin. -
main
işlevde, yalnızcasendMessageToFcmRegistrationToken
işlevindeki açıklamayı kaldırın ve kodu çalıştırmak için çalıştır'a tıklayın.- FCM Kayıt Belirteci'nin
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 Belirteci'nin
- 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 bildirimler tepsisinde göründüğünü gözlemlersiniz.
Müthiş, bir uygulama örneğine mesaj göndermek için Firebase Admin SDK'yı kullandınız. Sunucunuzda Firebase Admin SDK kullanma hakkında daha fazla bilgi edinin.
6. Konu Aboneliğini / Aboneliği İptal Etme
Bu adımda, Android Uygulamasının Stok Kategorisi geçişinde konu aboneliği ve abonelikten çıkma işlemlerini uygulayacaksınız.
Bir Uygulama kullanıcısı, belirli bir Stok Kategorisi için anahtarı değiştirdiğinde, bir konu aboneliği veya abonelikten çıkma çağrısı yapılacaktır.
İnceleme kodu
- Android Uygulama kodunda
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. - Switch toggle'a 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 Kategorisi ile bağlamak için RecyclerView BağdaştırıcısınınonBindViewHolder
tarafından çağrılır.
Konu aboneliğini uygula
-
subscribeToStockCategory
yönteminde,FirebaseMessaging
nesnesininsubscribeToTopic
API'sine çağrıyı uygulayacaksınız. Kod şöyle bir şeye benzeyebilir:
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 abonelik iptalini uygula
- Benzer şekilde, else koşulunda,
unsubscribeFromTopic
API çağrısını uygulayacaksınız. Aşağıdaki satırlarda 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(); }); }
hadi deneyelim
- Uygulamayı çalıştırın ve Abone Ol ve Abonelikten Çık eylemlerini yürütmek için Stok Kategorisi seçeneklerini değiştirin. Bunun gibi bir şey olurdu:
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ı 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 girin.
- Şu biçimde bir dizedir:
/topics/<Topic Name>
. Örneğin,/topics/Technology
.
- Şu biçimde bir dizedir:
- Sonraki satırlarda yeni bir
message
nesnesi oluşturun (sendMessageToFcmRegistrationToken
işlevinde tanımlanana benzer).- Fark,
message
nesnesininToken
alanını ayarlamak yerine,Topic
alanını ayarlayacağınız olacaktı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 çağrıyı 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 çağrıyı yalnızcasendMessageToFcmTopic
işlevine etkinleştirin.
Mesaj gönder ve makbuzu onayla
- Konu mesajını göndermeden önce, uygulama örneğinizin, göndermek istediğiniz konuya abone olduğundan emin olun.
- Bu, karşılık gelen geçişin ç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 makbuzunu gözlemleyebilmeniz gerekir.
- Uygulama örneği ön planda
- Arka planda uygulama örneği
- Bonus: Gönderdiğiniz konunun aboneliğinden çıkıp mesajı tekrar göndermeyi deneyin. Mesajın uygulama örneğine teslim edilmediğini gözlemlersiniz.
8. İlk Konu Durum Mesajınızı Gönderme
Konu koşulu özelliği, daha anlamlı hedef kitle tanımı sağlamanıza olanak tanıyan 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ı göz önünde bulundurun. Böyle bir durum, örneğin Waymo'nun dahil olduğu kayda değer bir olay olduğunda ortaya çıkabilir.
Konular, aşağıdaki işleçleri kullanarak kombinasyonunuzu bir 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 Teknolojiye ve Otomotiv veya Enerji konularına abone olan uygulama örneklerini hedefler.
Bu işlevi kullanmak için gönderme isteklerinin nasıl oluşturulacağı hakkında daha fazla bilgi edinin.
Konu durumu mesajı göndermek için sunucu tarafı entegrasyonunu uygulayın
- Sunucu koduna geri dönün,
FcmSender.java
atlayın vesendMessageToFcmTopicCondition
adlı yöntemi bulun.
- İlk satırda
topicCondition
değişkeni için mesajı göndermek istediğiniz konu koşulunu girin. 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).- Fark, nesnenin
Topic
alanını ayarlamak yerine,Condition
alanını ayarlayacağınız olacaktı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 çağrıyı 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 çağrıyı yalnızcasendMessageToFcmTopicCondition
işlevine etkinleştirin.
Mesajı gönder ve makbuzu doğrula
- Konu mesajını göndermeden önce, uygulama örneğini hem Teknoloji hem de Otomotiv konularına abone olarak 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ın alındığını gözlemleyebilmeniz gerekir.
- Uygulama örneği ön planda
- Arka planda uygulama örneği
- Bonus: Artık Teknoloji konusundan çıkabilirsiniz ve konu durumu mesajını tekrar gönderebilirsiniz. Mesajın uygulama örneği tarafından alınmadığını gözlemlemelisiniz.
9. Özet
Bu noktaya kadar öğrendiklerinizi hızlı bir şekilde özetleyelim.
- Bir uygulama örneğinden konu aboneliği / abonelik iptali nasıl başlatılır.
- Konuya bir mesaj gönderme ve abone olunan uygulama örneklerinde alındının doğrulanması.
- Bir Koşul konusuna mesaj gönderme ve koşulu karşılayan bir uygulama örneğinde alındının doğrulanması.
Bir sonraki bölümde, istemci tarafından çağrıları başlatmaya gerek kalmadan konulara uygulama örneklerine nasıl abone olabileceğinizi / abonelikten çıkabileceğinizi öğreneceksiniz.
10. Konu Aboneliklerini Sunucu Tarafından Yönetin
Şimdiye kadar, bu kod laboratuvarında, 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, bir uygulamanın kullanıma sunulmasını beklemeden mevcut kullanıcı tabanınızın bir alt grubuna yeni bir konuya abone olmak isteyebilirsiniz.
Bu bölümde, sunucu tarafından aramalar yaparak bir konuya bir grup FCM Kayıt Simgesine abone olmak ve abonelikten çıkmak için Firebase Admin SDK'yı nasıl kullanacağınızı öğreneceksiniz.
FCM konusuna FCM Kayıt Belirteçlerinin sunucu tarafı aboneliğini uygulayın
- Sunucu kodunda,
FcmSubscriptionManager.java
sınıfına atlayın.subscribeFcmRegistrationTokensToTopic
adlı yöntemi bulun.subscribeToTopic
API çağrısını burada uygulayacaksınız.
- Uygulama örneğini Enerji konusuna abone olalım. 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 virgülle ayrılmış bir dize listesi. -
topicName
: Enerji konusu için konu adı, yani/topics/Energy
.
-
- Sonraki birkaç satırda, şu satırlar boyunca çağrıyı uygulayın:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- Bazı üst düzey sonuç istatistikleri için
TopicManagementResponse
inceleyebilirsiniz.getSuccessCount
kullanılarak başarıyla oluşturulan konu aboneliklerinin sayısını yazdırmak gibi.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Son olarak,
main
işlevde yalnızcasubscribeFcmRegistrationTokensToTopic
işlevine yapılan çağrıları etkinleştirin.
Abonelik oluştur ve konu mesajı gönder
- Bu noktada, konu aboneliğini oluşturmaya ve ona bir 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 benzer,
-
FcmSender.java
sendMessageToFcmTopic
işlevini bulun. -
topicName
öğesini Energy konusuna ayarlayın, yani/topics/Energy
. - Bir
Message
nesnesi oluşturun ve onusetTopic
kullanarak konuya hedefleyin. - Son olarak, yalnızca
sendMessageToFcmTopic
işlevini etkinleştirmek içinmain
yöntemi güncelleyin.
-
-
FcmSender.java
main
işlevini yürütün. Bu, mesajı uygulama örneğinize gönderir ve bunu uygulamanızda aşağıdaki gibi gözlemleyebilirsiniz.- Uygulama örneği ön planda
- Arka planda uygulama örneği
FCM Konusuna FCM Kayıt Belirteçlerinin sunucu tarafında abonelik iptalini uygulayın
- Sunucu tarafı konu abonelik iptalleri için bu
unsubscribeFromTopic
API'sini kullanın.FcmSubscriptionManager.java
sınıfınınunsubscribeFcmRegistrationTokensFromTopic
fonksiyonuna ilgili kodu ekleyeceksiniz.
- Sunucu tarafı abonelik iptal 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 becerinizi basitleştirmeye yardımcı olacaktır.
Sıradaki ne?
Kod laboratuvarınızı tamamladığınıza göre, aşağıdaki kılavuzları kullanarak diğer platformlar için konuları denemeyi düşünün: