1. Giriş
Hedefler
Bu codelab'de, FCM konularını kullanarak uygulama örneklerinizin çeşitli alt gruplarına push mesajlarını çoklu yayın yapmak için çoklu platform uygulamanızın enstrümantasyonunu nasıl yapacağınızı öğreneceksiniz.
İşlemi tamamladıktan sonra bu alt grupları ve alt gruplar üzerinde çoklu yayın push mesajlarını yönetmek için FCM altyapısından yararlanabilirsiniz.
Konulara Genel Bakış
Topics, 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 konularla ilgili abonelikleri sürdürmek için API'ler sağlar. Bir uygulama örneğini konuyla ilişkilendirme ve konunun ilişkisini kesme işlemine sırasıyla abone ol ve abonelikten çık
Konular, herkese açık içerikler için kullanılmalıdır. Örneğin, hava durumu güncellemeleriyle ilgili mesajlar. Kullanıcı hassas mesajları göndermek istiyorsanız birden fazla cihaz üzerinde çoklu yayın yapmak için Firebase Admin SDK'yı kullanın.
Konuya dayalı çoklu yayın, işleme hızı için optimize edilmiştir.
Neler öğreneceksiniz?
- Kullanıcıları bir mobil uygulamadaki konulara abone yapma (ve abonelikten çıkma)
- Konular kullanılarak çok noktaya yayın push mesajları gönderme.
- Konu koşullarını kullanarak bir konu kombinasyonuna mesaj gönderme.
- Konu aboneliklerini sunucu tarafında yönetme, toplu abonelik ve abonelik iptali işlemleri yapma.
Oluşturacaklarınız
- Konulara abone olan/abonelikten çıkan ve konulara gönderildiğinde mesaj alan bir Android uygulaması.
- FCM API'leri aracılığıyla konu mesajları göndermek için kullanılacak, Firebase Admin SDK'nın kullanıldığı sunucu tarafı entegrasyonu.
Gerekenler
- Tercih ettiğiniz bir tarayıcı (ör. Chrome).
- Java uygulamaları geliştirmek için kullanılan IntelliJ IDEA IDE.
- Yükleme sırasında Gradle desteğini etkinleştirdiğinizden emin olun.
- Android uygulamaları geliştirmek için kullanılan Android Studio IDE'si.
- Android uygulamasını çalıştıran bir cihaz. Şunlardan birini yapın:
- 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 kullanabileceğiniz bir Google Hesabı.
2. Kurulum
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
şeklinde iki dizin içerir. İlki, başlatıcı 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
- Firebase konsolunda Proje ekle'yi tıklayın, Firebase projesini StockNews olarak adlandırın ve Devam'ı 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ştirme adımını atlayabilirsiniz. Bu codelab'in amaçları açısından ihtiyacınız yoktur. Devam'ı tıklayın.
- Create project (Proje oluştur) seçeneğini tıklayın.
Tebrikler! Firebase projenizi oluşturdunuz. Artık proje adını tıklayarak konsola girebilirsiniz.
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 önceden dahil edilmiştir. Ancak, mobil platformlara yönelik destek eklemek için şunları yapmanız gerekir:
- İstenen 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 Console'da, Ayarlar simgesinde soldaki gezinme çubuğunun üst kısmında yer alan Proje Ayarları'nı seçin ve Genel sayfasındaki Uygulamalarınız bölümünden Android simgesini tıklayın.
Şu iletişim kutusunu göreceksiniz :
- Sağlanması gereken önemli değer Android paket adıdır.
com.ticker.stocknews
olarak ayarla.- Burada sağlanan paket adı, başlangıç StockNewsApp kodunuzun
AndroidManifest.xml
bölümünde sağlanan adla aynı olmalıdır. Bu şifreyi bulmak veya değiştirmek isterseniz 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 paketinin 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 SHA-1 imza sertifikası hata ayıklama sertifikasına ihtiyacınız yoktur. Bu alanı boş bırakın.
- Uygulamayı Kaydet'i tıklayın.
- Firebase konsolunda devam ederek
google-services.json
yapılandırma dosyasını indirme talimatlarını uygulayın. - Geri kalan her şey başlangıç uygulaması kodunda zaten yapılandırılmış olduğundan kalan kurulum adımlarını atlayabilirsiniz. Uygulamanız, Firebase Konsolu'nun ana sayfasında listelenir.
- Az önce 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şlamak için hazırsınız. İlk olarak 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
öğesini içe aktarın.
Proje yüklendikten sonra, Git'in tüm yerel değişikliklerinizi izlemediğini belirten bir uyarı da görebilirsiniz. "Yoksay"ı tıklayabilirsiniz. veya "X" dokunun. (Git deposuna herhangi bir değişiklik aktarmazsınız.)
Android görünümünü kullanıyorsanız proje penceresinin sol üst köşesinde aşağıdaki resme benzer bir sonuç gösterilir. (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 boyunca Android Studio'nun alt kısmındaki durum çubuğunda bir döner simge göreceksiniz:
Kodda değişiklik yapmadan önce bu işlemin tamamlanmasını beklemenizi öneririz. Bu, Android Studio'nun gerekli tüm bileşenleri almasına olanak tanır.
Ayrıca, "Dil değişikliklerinin geçerli olması için yeniden yüklensin mi?" istemini görürsünü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 makalesine bakın.
Android uygulaması başlangıç kodunu anlama
- Başlangıç kodu, minimum düzeyde işlevselliğe ve kullanıcı arayüzüne sahip, basit bir Android Uygulamasıdır.
app/build.gradle
dosyasına zaten bir firebase-messaging SDK bağımlılığı eklenmiş.
AndroidManifest.xml
içinde birMESSAGING_EVENT
geri arama işleyici zaten eklenmiş.- Bu işleyici olan
StockNewsMessagingService.java
,FirebaseMessagingService
sınıfını genişleterek Firebase Cloud Messaging ile ilgili çeşitli işlevler sunar. Daha fazla bilgi edinmek için FirebaseMessagingService belgelerine bakı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ı makaleye bakın.- Bir mesaj alındığında ve uygulama ön plandayken
onMessageReceived
işlevi çağrılır. Şu an için yalnızca alınan mesaj kaydedilir.- Arka plan ve ön plandaki mesajların teslim edilmesi ve işlenmesi arasındaki farklar hakkında daha fazla bilgi edinmek için Android uygulamasında mesaj alma başlıklı makaleyi inceleyin.
- Bu işleyici olan
- Ayrıca
AndroidManifest.xml
ürünündeStockNewsApplication
adlı bir AndroidApplication
sınıfı da sağlanmaktadır.- Bu sınıf, Uygulama başlatıldığında örneklenecek ilk sınıf olacak.
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 günlüğe kaydeder.
MainActivity.java
, Stok Kategorisi seçeneklerini gösterenRecyclerView
özelliğini ekler.SubscriptionAdapter.java
, Stok Kategorisi seçim ekranını çekenRecyclerView.Adapter
işlevini uygular.- Her Stok Kategorisinin adı ve yanında abonelik açma/kapatma düğmesi bulunur.
- Açma/kapatma düğmesi değiştirildiğinde bir FCM konu aboneliği/abonelik iptali araması yapılır.
- Bu çağrıları gelecek bölümlerde uygulayacaksınız.
model/StockCategories.java
sınıfı, tüm Stok Kategorilerinin ve bunlarla ilişkili konu adlarının bir 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.
- Üstteki 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şturur ve bunu günlüğe kaydeder. Ancak uygulamanın kullanıcı arayüzünde herhangi bir değişiklik olmayacak.
- Sonraki adımlarda kullanılacağı şekilde FCM Kayıt Jetonunu kopyalayıp kaydedin.
5. Test Mesajı Gönder
Artık son adımda ayarladığınız uygulama örneğine bir test mesajı göndermeye hazırsınız.
Başlangıç sunucu 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ın alınması da dahil olmak üzere projenizi derlemesinin birkaç dakika sürebileceğini unutmayın.
Sunucu başlangıç kodunu anlama
- Sunucu başlangıç kodu, Gradle tabanlı bir Java projesidir.
build.gradle
dosyasında zaten eklenmiş firebase-admin SDK'sına bağımlı bir bağımlılık var. 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 şu dikkat edilmesi gereken yöntemler yer almaktadır:initFirebaseSDK
: Firebase-admin SDK'sını başlatır.sendMessageToFcmRegistrationToken
: FCM Kayıt Jetonu'na mesaj gönderin.sendMessageToFcmTopic
: Bir FCM konusuna mesaj gönder.sendMessageToFcmTopicCondition
: FCM konu koşuluna mesaj gönderir.
FcmSubscriptionManager.java
: Bu sınıf, sunucu tarafında konu aboneliklerinin yönetilmesine olanak tanıyan yöntemler içerir.initFirebaseSDK
: Firebase-admin SDK'sını başlatır.subscribeFcmRegistrationTokensToTopic
: FCM Kayıt Jetonlarını bir FCM konusuna abone olma.unsubscribeFcmRegistrationTokensFromTopic
: FCM Kayıt Jetonlarının bir FCM konusunun aboneliğinden çıkması.
Sunucu kodunu ayarlama
- Öncelikle, firebase-admin SDK'sının FCM API'lerine yapılan çağrıları yetkilendirmesine olanak tanıyan bir Firebase Hizmet Hesabı oluşturmamız gerekir.
- Firebase konsoluna 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.
- 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
,service-account.json
dosyasını aşağıdaki kodu kullanarak sınıf yolundan yükler.
- Bu noktada, sunucu kodu hazırdır. Derlemeyi Çalıştırın -> Üst menü çubuğundan Proje derleyin.
Test Mesajı Gönderme
FcmSender.java
içindesendMessageToFcmRegistrationToken
işlevini bulun ve Başlangıç uygulamasını çalıştırma bölümünden kopyaladığınız FCM kayıt jetonunuregistrationToken
alanına girin.main
işlevinde, yalnızcasendMessageToFcmRegistrationToken
işlevinin açıklamasını kaldırın ve kodu yürütmek için Çalıştır'ı tıklayın.- FCM Kayıt Jetonunun,
message
nesnesininToken
alanında nasıl ayarlandığına dikkat edin. - Ayrıca,
FirebaseMessaging
arayüzününsend
API'sini nasıl kullandığımıza da dikkat edin.
- FCM Kayıt Jetonunun,
- Bu işlem, önceki adımda ayarladığınız uygulama örneğine bir mesaj göndermelidir.
- Uygulama örneği ön plandayken günlüğe mesaj içeriği kaydedildiğini görürsünüz.
- Uygulama örneği arka plandayken de bildirim tepsisinde mesajın görüntülendiğini görürsünüz.
Mükemmel. Uygulama örneğine mesaj göndermek için Firebase Admin SDK'yı kullandınız. Sunucunuzda Firebase Admin SDK'yı kullanma hakkında daha fazla bilgi edinin.
6. Konu aboneliği / aboneliği iptal etme uygulama
Bu adımda, Android uygulamasının Stok Kategorisi açma/kapatma düğmesinden konu aboneliği ve abonelik iptali işlemlerini uygulayacaksınız.
Bir Uygulama kullanıcısı belirli bir Stok Kategorisi'nin düğmesini açık konuma getirdiğinde, bir konu aboneliği veya abonelikten çıkma araması yapılır.
Kodu inceleyin
- Android uygulaması kodunda
SubscriptionAdapter.java
sınıfına gidin veRecyclerViewViewHolder
sınıfını bulun.
- Sınıf oluşturucu,
setOnCheckedChangeListener
öğesini kullanarak abonelik açma/kapatma düğmesi için bir işleyici ayarlar. - Anahtar açma/kapatma anahtarına 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 Kategorisine bağlamak için RecyclerView BağdaştırıcısıonBindViewHolder
tarafından çağrılır.
Konu aboneliğini uygulama
subscribeToStockCategory
yönteminde,FirebaseMessaging
nesnesininsubscribeToTopic
API'sine yapılan çağrıyı uygularsınız. Kod aşağıdaki gibi 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ği iptal etme özelliğini uygulama
- Benzer şekilde, else koşulunda
unsubscribeFromTopic
API'sine yapılan çağrıyı uygularsı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(); }); }
Hadi deneyelim
- Abone olma ve Abonelikten çıkma işlemlerini yürütmek için uygulamayı çalıştırıp Stok Kategorisi seçeneklerini açın/kapatın. Bu URL aşağıdaki gibi görünür:
Abone ol | Abonelikten çık |
7. İlk Konu Mesajınız gönderiliyor
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
bölümüne gidin vesendMessageToFcmTopic
adlı yöntemi bulun.
- İlk satırda, mesajı göndermek istediğiniz FCM Konusunu girin.
- Bu dize şu biçimde bir dizedir:
/topics/<Topic Name>
. Örneğin,/topics/Technology
.
- Bu dize ş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 yerineTopic
alanını ayarlarsınız.
- 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 yapılan çağrıyı ekleyin (sendMessageToFcmRegistrationToken
işlevinde yapılan gönderme çağrısıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
main
işlevini güncelleyin ve çağrıyı yalnızcasendMessageToFcmTopic
işlevini etkinleştirin.
Mesaj gönderme ve makbuzu 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üğmesini çevirerek yapılabilir. Örneğin:
- Artık konu mesajınızı,
FcmSender.java
öğesininmain
işlevini çalıştırarak gönderebilirsiniz. - Daha önce olduğu gibi, uygulama örneğinde mesaj alımını görebiliyor olmalısınız.
- Ön planda uygulama örneği
- Arka plandaki uygulama örneği
- Bonus: Gönderdiğiniz konunun e-posta listesinden çıkıp iletiyi yeniden göndermeyi deneyin. Mesajın uygulama örneğine teslim edilmediğini görürsünüz.
8. İlk Konu Koşulu İletiniz gönderiliyor
Konu koşulu özelliği, birden fazla konu kombinasyonuna mesaj göndermenize olanak tanır. Bu sayede daha iyi ifade edilen bir kitle tanımı sunabilirsiniz.
Örneğin, StockNews Uygulamamızda, Teknoloji veya Otomotiv konularına abone olan bir uygulama örneği grubuna mesaj gönderme olasılığını göz önünde bulundurun. Örneğin, Waymo ile ilgili dikkate değer bir olay varsa böyle bir durum ortaya çıkabilir.
Topics, aşağıdaki operatörleri 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. - () : Gruplandırma için parantez. Ö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şlevi kullanmak için gönderme istekleri 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 sağlayın. Şu değere 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ı ayarlarsınız.
- 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 yapılan çağrıyı ekleyin (sendMessageToFcmTopic
işlevinde yapılan gönderme çağrısıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
- Son olarak,
main
işlevini güncelleyin ve çağrıyı yalnızcasendMessageToFcmTopicCondition
işlevini etkinleştirin.
Mesajı gönderme ve makbuzu doğrulama
- Konu mesajını göndermeden önce uygulama örneğinin hem Teknoloji hem de Otomotiv konularına abone olmasını sağlayarak uygulama örneğinizin belirtilen konu koşulunu karşıladığından emin olun.
- Artık konu mesajınızı,
FcmSender.java
öğesininmain
işlevini çalıştırarak gönderebilirsiniz. - Daha önce olduğu gibi, uygulama örneğinde mesaj alımını görebiliyor olmalısınız.
- Ön planda uygulama örneği
- Arka plandaki uygulama örneği
- Bonus: Artık Teknoloji konusu aboneliğinden çıkabilir ve konu koşulu mesajını yeniden gönderebilirsiniz. Uygulama örneğinin mesajı almadığını gözlemlemeniz gerekir.
9. Özet
Bu noktaya kadar öğrendiklerinizi hızlıca özetleyelim.
- Uygulama örneğinden konu aboneliği başlatma veya aboneliği iptal etme
- Konuya mesaj gönderme ve abone olunan uygulama örneklerinde makbuzu doğrulama.
- Koşul konusuna mesaj gönderme ve koşulu karşılayan bir uygulama örneğinde makbuzu doğrulama.
Bir sonraki bölümde, istemci tarafında çağrı örneklemeye gerek kalmadan uygulama örneklerinin konulara nasıl abone olacağını veya abonelikten nasıl çıkabileceğinizi öğreneceksiniz.
10. Konu Aboneliklerini Sunucu Tarafından Yönetme
Bu codelab'de şimdiye kadar tüm konu abonelikleri ve abonelik iptali çağrıları bir uygulama örneğinden başlatılmaktadır.
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 yapmak isteyebilirsiniz.
Bu bölümde, sunucu tarafında çağrı yaparak bir konuya grup FCM Kayıt Jetonu'na abone olmak ve abonelikten çıkmak için Firebase Yönetici SDK'sını nasıl kullanacağınızı öğreneceksiniz.
FCM Kayıt Jetonları sunucu tarafı aboneliğini FCM konusuna uygulama
- Sunucu kodunda
FcmSubscriptionManager.java
sınıfına gidin.subscribeFcmRegistrationTokensToTopic
adlı yöntemi bulun.subscribeToTopic
API'sine yapılan çağrıyı burada uygularsınız.
- Uygulama örneğini Enerji konusuna abone olalım. Bunun için öncelikle aşağıdaki iki alana ait verileri girin:
registrationTokens
: Konu abonelikleri oluşturmak istediğiniz FCM Kayıt Jetonlarını temsil eden dizelerin virgülle ayrılmış listesi.topicName
: Enerji konusunun konu adı, ör./topics/Energy
.
- Sonraki birkaç satırda, aşağıdaki satırlarda çağrı uygulanır:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- Bazı üst düzey sonuç istatistikleri için
TopicManagementResponse
sayfasını inceleyebilirsiniz. Örneğin,getSuccessCount
ile başarıyla oluşturulan konu aboneliklerinin sayısını yazdırabilirsiniz.
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ştirir.
Abonelik oluşturma ve konu mesajı gönderme
- Bu noktada, konu aboneliğini oluşturmaya ve buna bir ileti göndermeye hazırsınızdır.
FcmSubscriptionManager.java
sınıfınınmain
işlevini yürütün. Bu, bir konu aboneliği oluşturur.- Şimdi, mesajı göndermek için kodu ayarlayın. Öncekine benzer şekilde,
FcmSender.java
içindesendMessageToFcmTopic
işlevini bulun.topicName
özelliğini Enerji konusuna ayarlayın./topics/Energy
.- Bir
Message
nesnesi oluşturun vesetTopic
kullanarak bunu konuya 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şlemle mesaj, uygulama örneğinize gönderilir ve uygulamanızda aşağıdaki şekilde gözlemleyebilirsiniz.- Ön planda uygulama örneği
- Arka plandaki uygulama örneği
FCM Kayıt Jetonları için sunucu tarafı aboneliğinden FCM konusuna yönelik kaldırma işlemini uygulama
- Sunucu tarafı konu aboneliklerini iptal etmek için bu
unsubscribeFromTopic
API'yi kullanın. İlgili kodu,FcmSubscriptionManager.java
sınıfınınunsubscribeFcmRegistrationTokensFromTopic
işlevine ekleyeceksiniz.
- Sunucu tarafı abonelik iptali kodunu uygulamak ve konu mesajı göndererek etkisini doğrulamak sizin için bir alıştırma olarak bırakıldı.
11. Tebrikler
Tebrikler, uygulama örneklerinizin alt gruplarına çoklu yayın mesajları göndermek için FCM konularını başarıyla kullandınız. Bu, alakalı içeriklerle kullanıcılarınıza zamanında ulaşmanızı kolaylaştırır.
Sırada ne var?
Codelab'inizi tamamladığınıza göre artık aşağıdaki kılavuzları kullanarak diğer platformlar için konuları deneyebilirsiniz: