FCM konularını kullanan ilk çok noktaya yayın push mesajınız

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

1. Giriş

Hedefler

Bu codelab'de, push mesajlarını FCM konularını kullanarak uygulama örneklerinizin çeşitli alt gruplarına çoklu yayın yapabilmeniz için çoklu platform uygulamanızı nasıl kullanacağınızı öğreneceksiniz.

Bitirdikten sonra, bu alt grupları ve alt gruplar üzerindeki ç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, bu konulara abonelikleri sürdürmenin yanı sıra mesaj göndermek için API'ler sağlar. Bir uygulama örneğini konuyla ilişkilendirme ve ayırma işlemine sırasıyla abone olma ve abonelikten çıkma işlemi 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'sını kullanın.

Konu tabanlı çok noktaya yayın, verim için optimize edilmiştir.

ne öğreneceksin

  • Kullanıcılara bir mobil uygulamadan konulara nasıl abone olunur (ve abonelikten çıkılır).
  • Konuları kullanarak çok noktaya yayın push mesajları nasıl gönderilir.
  • Konu koşulları kullanılarak 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/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'sını 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.
    • 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. Bir digeri:
    • Android öykünücüsü. ( 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 klonlayı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ı izleyin. StockNewsApp ve StockNewsServer adlı 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 kod laboratuvarının tamamlanmış versiyonu messaging/fcm-topics-codelab/completed dizinine yerleştirilir.

Bir Firebase projesi oluşturun

  1. 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).

fc08f9a7808e4553.png

  1. Google Analytics'i etkinleştirmeyi atlayabilirsiniz. Bu kod laboratuvarının amaçları için buna ihtiyacınız yok. Devam'ı tıklayın.
  2. Proje oluştur 'u tıklayın.

Tebrikler! Firebase projenizi yeni oluşturdunuz. Şimdi 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 projede zaten kontrol edildi. Ancak, mobil platformlar için 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 kod laboratuvarının amaçları doğrultusunda, bir Android Firebase uygulaması ekleyeceğiz.

84e0b3199bef6d8a.png Android'i yapılandır

  1. Firebase Konsolu'nda , Ayarlar çarkındaki sol gezinme ç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: 8254fc299e82f528.png

  1. Sağlanacak önemli değer, Android paketinin adıdır . com.ticker.stocknews olarak ayarlayın.
    1. Burada sağlanan paket adı, başlangıç ​​StockNewsApp kodunuzun AndroidManifest.xml dosyasında sağlananla aynı olmalıdır. Yerini bulmak veya değiştirmek isterseniz, şu adımları izleyin:
      1. StockNewsApp dizininde, app/src/main/AndroidManifest.xml dosyasını açın.
      2. manifest öğesinde, package özniteliğinin dize değerini bulun. Bu değer, Android paketinin adıdır.
  1. Firebase iletişim kutusunda, kopyalanan paket adını Android paket adı alanına yapıştırın.
  2. Bu uygulama yayımlanmayacağından, bu kod laboratuvarı için SHA-1 Hata Ayıklama imzalama sertifikasına ihtiyacınız yoktur. Bunu boş bırakın.
  3. Uygulamayı Kaydet'i tıklayın.
  4. Firebase Konsolunda devam ederek, google-services.json yapılandırma dosyasını indirmek için talimatları izleyin.
  5. Diğer 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.
  6. 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 başlamaya hazırsınız! İlk önce uygulamayı oluşturun ve çalıştırın.

Başlangıç ​​uygulamasını içe aktarın

Android Studio'yu başlatın ve messaging/fcm-topics-codelab/starter/StockNewsApp başlangıç ​​kodu dizininden içe aktarın.

Proje yüklendikten sonra, Git'in tüm yerel değişikliklerinizi izlemediğine dair bir uyarı da görebilirsiniz, sağ üstteki " Yoksay " veya " X " üzerine tıklayabilirsiniz. (Git deposuna herhangi bir değişiklik göndermeyeceksiniz.)

Proje penceresinin sol üst köşesinde, Android görünümündeyseniz aşağıdaki resim gibi bir şey görmelisiniz. ( Proje görünümündeyseniz, aynı şeyi görmek için projeyi genişletmeniz gerekecektir)

b574ea0089ee87c6.png

Lütfen Android Studio'nun projeyi ilk kez arka planda derlemesinin birkaç saniye sürebileceğini unutmayın. Bu süre boyunca Android Studio'nun altındaki durum çubuğunda bir döndürücü göreceksiniz:

4bc64eb3b99eb0ae.png

Kod değişiklikleri yapmadan önce bu işlem bitene kadar beklemenizi öneririz. Bu, Android Studio'nun gerekli tüm bileşenleri çekmesini sağlayacaktır.

Ayrıca, "Dil değişikliklerinin etkili olması için yeniden yüklensin mi?" diye bir uyarı alırsanız. veya benzeri 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ı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 zaten firebase mesajlaşma SDK'sına bir bağımlılık eklendi.

f04ff8f48d186dff.png

  • AndroidManifest.xml bir MESSAGING_EVENT geri arama işleyicisi zaten eklenmiştir.
    • Bu işleyici, StockNewsMessagingService.java , Firebase Cloud Messaging ile ilgili çeşitli işlevler sağlayan FirebaseMessagingService sınıfını genişletir. Daha fazla bilgi için FirebaseMessagingService belgelerine bakın. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • FCM Kayıt Simgesi 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.
    • Bir mesaj alındığında ve uygulama ön planda olduğunda onMessageReceived işlevi çağrılır. Şu anda, yalnızca alınan mesajı günlüğe kaydeder.
  • Ayrıca, AndroidManifest.xml içinde StockNewsApplication adında bir Android Application sınıfı da sağlanır. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Bu sınıf, Uygulama başlatıldığında somutlaştırılan ilk sınıf olacaktır.
    • StockNewsApplication sınıfının onCreate işlevinde, bir FCM Kayıt Simgesi oluşturma çağrısı eklenir. Geçerli bir FCM Kayıt Simgesi oluşturacak ve günlüğe kaydedecektir.
  • MainActivity.java , Stok Kategorisi seçeneklerini görüntüleyen RecyclerView ekler.
  • SubscriptionAdapter.java , Stok Kategorisi seçim ekranını çizen RecyclerView.Adapter uygular.
    • Her Stok Kategorisinin bir adı ve yanında bir abonelik geçişi vardır.
    • Geçişi değiştirmek, bir FCM konu aboneliği / abonelikten çıkma araması yapmalıdır.
    • Bu çağrıları ilerleyen 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.

b32663ec4e865a18.png

Başlangıç ​​uygulamasını çalıştırın

  1. Android cihazınızı bilgisayarınıza bağlayın veya bir emülatör başlatın.
  2. Üst araç çubuğunda, hedef Android cihazınızı veya öykünücünüzü seçin ve çalıştır düğmesine basın.

5b27fc5b237e06b9.png

  1. Uygulama Kullanıcı Arayüzü aşağıdaki gibi görünecektir:

ff5b1a1c53231c54.png

  1. Uygulama bir FCM Kayıt Simgesi oluşturacak ve günlüğe kaydedecektir. Ancak Uygulama Arayüzünde hiçbir şey değişmeyecek.
    1. Sonraki adımlarda kullanılacağı için FCM Kayıt Simgesini kopyalayın ve kaydedin.

927eb66bc909f36b.png

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:

da20711f6527dff6.png

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ı 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.

650fc733298588f8.png

  • 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'sını başlatır.
      • sendMessageToFcmRegistrationToken : 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 aboneliklerinin sunucu tarafından yönetilmesine izin veren yöntemler içerir.
      • initFirebaseSDK : Firebase-admin SDK'sını başlatır.
      • subscribeFcmRegistrationTokensToTopic : bir FCM konusuna FCM Kayıt Belirteçlerine abone olun.
      • unsubscribeFcmRegistrationTokensFromTopic : bir FCM konusundaki FCM Kayıt Belirteçlerinin aboneliğini iptal edin.

Sunucu kodunun ayarlanması

  1. İlk olarak, firebase-admin SDK'nın FCM API'lerine yapılan çağrıları yetkilendirmesine izin veren bir Firebase Hizmet Hesabı oluşturmamız gerekiyor.
    1. Firebase Konsolu'na gidin, sol gezinme çubuğunda Projeye Genel Bakış'ın yanındaki dişli simgesine tıklayın ve Proje ayarları 'nı seçin. 8c2108d4d7c915e9.png
    2. Ayarlar sayfasında Hizmet hesapları'nı seçin ve Hizmet hesabı oluştur 'u tıklayın. 84b128cc5dac0a85.png
    3. Şimdi Yeni özel anahtar oluştur düğmesine tıklayın ve anahtar dosyanızın otomatik olarak indirilmesi başlayacaktır.
    4. Anahtar dosyasını service-account.json olarak yeniden adlandırın ve bunu messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources klasörüne kopyalayın.
    5. Hem FcmSender.java hem de FcmSubscriptionManager.java, aşağıdaki kodu kullanarak service-account.json dosyasını sınıf FcmSubscriptionManager.java yükler. 8dffbee658e0bdd.png
  2. Bu noktada sunucu kodu hazırdır. Üst menü çubuğundan Build -> Build Project komutunu çalıştırın.

Test Mesajı Gönderme

  1. FcmSender.java sendMessageToFcmRegistrationToken işlevini bulun ve Başlatıcı uygulamasını çalıştır bölümünden kopyaladığınız FCM registrationToken belirtecini recordToken alanına ekleyin.
  2. main işlevde, yalnızca sendMessageToFcmRegistrationToken işlevinin açıklamasını kaldırın ve kodu çalıştırmak için çalıştır'ı tıklayın.
    1. FCM Kayıt Simgesinin message nesnesinin Token alanına nasıl ayarlandığını gözlemleyin.
    2. Ayrıca, FirebaseMessaging arayüzünün send API'sini nasıl kullandığımıza dikkat edin.

52e4a3ec3f816473.png

  1. Bu, önceki adımda kurduğunuz uygulama örneğine bir mesaj göndermelidir.
  2. Uygulama örneği ön plandayken, günlüğe kaydedilen mesaj içeriğini görmelisiniz.

d3540ec1089f97dd.png

  1. Uygulama örneği arka planda olduğunda, bildirim tepsisinde mesajın göründüğünü gözlemlersiniz.

31203deca59c03fe.png

Harika, bir uygulama örneğine mesaj göndermek için Firebase Admin SDK'sını kullandınız. Sunucunuzda Firebase Admin SDK'sını kullanma hakkında daha fazla bilgi edinin.

6. Konu Aboneliği / Abonelikten Çıkma Uygulaması

Bu adımda, Android Uygulamasının Stok Kategorisi geçişinde konu aboneliği ve abonelikten çıkma eylemlerini 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 araması yapılacaktır.

İnceleme kodu

  • Android Uygulaması kodunda SubscriptionAdapter.java sınıfına gidin ve RecyclerViewViewHolder sınıfını bulun.

6c0614199e684f6.png

  • Sınıf oluşturucu, 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 ve unsubscribeFromStockCategory yöntemleri çağrılarak gerçekleştirilir.
  • SetData yöntemi, setData uygun Stok Kategorisi ile bağlamak için RecyclerView Bağdaştırıcısının onBindViewHolder tarafından çağrılır.

Konu aboneliğini uygula

  1. subscribeToStockCategory yönteminde, FirebaseMessaging nesnesinin subscribeToTopic ToTopic API'sine yapılan ç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 et

  1. Benzer şekilde, else koşulunda, unsubscribeFromTopic çıkmak için çağrıyı gerçekleştireceksinizFromTopic API. Aşağıdaki satırlar boyunca 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();
          });
    }

deneyelim

  1. Uygulamayı çalıştırın ve Abone Ol ve Abonelikten Çık eylemlerini yürütmek için Stok Kategorisi seçeneklerini değiştirin. Şuna benzer bir şey olurdu:

Abone olmak

Aboneliği iptal et

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

  1. Sunucu kodunda, FcmSender.java ve sendMessageToFcmTopic adlı yöntemi bulun.

56381dd1b40cde9c.png

  1. İlk satırda, mesajı göndermek istediğiniz FCM Konusunu belirtin.
    • Bu, şu biçimde bir dizedir: /topics/<Topic Name> . Örneğin, /topics/Technology .
  2. Sonraki satırlarda yeni bir message nesnesi oluşturun ( sendMessageToFcmRegistrationToken işlevinde tanımlanana benzer).
    • Fark, message nesnesinin Token alanını ayarlamak yerine, Topic alanını belirleyeceksiniz.
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();
  1. Ş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ıdır).
FirebaseMessaging.getInstance().send(message);
  1. Son olarak, main işlevi güncelleyin ve yalnızca sendMessageToFcmTopic işlevine yapılan çağrıyı etkinleştirin.

9a6aa08dd7c28898.png

Mesaj gönder ve makbuzu doğrula

  1. Konu mesajını göndermeden önce, uygulama örneğinizin göndermek istediğiniz konuya abone olduğundan emin olun.
    1. Bu, ilgili geçişin çevrilmesiyle yapılabilir. Örneğin:
    46682474408377712.png
  2. Artık konu mesajınızı FcmSender.java main işlevini çalıştırarak gönderebilirsiniz.
  3. Daha önce olduğu gibi, uygulama örneğinde mesaj makbuzunu gözlemleyebilmelisiniz.
    1. Uygulama örneği ön planda
    c144721399f610fe.png
    1. Arka planda uygulama örneği
    44efc7dfd57e8e9a.png
  4. Bonus: Gönderdiğiniz konunun aboneliğinden çıkmayı deneyin ve mesajı tekrar gönderin. Mesajın uygulama örneğine teslim edilmediğini gözlemlersiniz.

8. İlk Konu Durumu 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ö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. Böyle bir durum, örneğin Waymo'nun dahil olduğu kayda değer bir olay olduğunda ortaya çıkabilir.

Konular, kombinasyonunuzu aşağıdaki operatörleri kullanarak 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 Teknoloji 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

  1. Sunucu koduna geri dönün, FcmSender.java ve sendMessageToFcmTopicCondition adlı yöntemi bulun.

3719a86c274522cf.png

  1. İ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 .
  2. Sonraki satırlarda, yeni bir message nesnesi oluşturun ( sendMessageToFcmTopic işlevinde tanımlanana benzer).
    1. Fark, nesnenin Topic alanını ayarlamak yerine, Condition alanını belirleyeceksiniz.
    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();
  1. Ş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ıdır).
FirebaseMessaging.getInstance().send(message);
  1. Son olarak, main işlevi güncelleyin ve çağrıyı yalnızca sendMessageToFcmTopicCondition işlevine etkinleştirin.

db9588d40d2a0da6.png

Mesajı gönder ve makbuzu doğrula

  1. 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.
  2. Artık konu mesajınızı FcmSender.java main işlevini çalıştırarak gönderebilirsiniz.
  3. Daha önce olduğu gibi, uygulama örneğinde mesaj makbuzunu gözlemleyebilmelisiniz.
    1. Uygulama örneği ön planda
    6f612ace15aa6515.png
    1. Arka planda uygulama örneği
    78044a56ac2359cb.png
  4. Bonus: Artık Teknoloji konusu aboneliğinizi iptal edebilir 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.
  • Koşul konusuna mesaj gönderme ve koşulu karşılayan bir uygulama örneğinde alındıyı doğrulama.

Bir sonraki bölümde, istemci tarafından çağrıları başlatmaya gerek kalmadan konulara uygulama örneklerine nasıl abone olabileceğinizi / abonelikten nasıl çıkacağınızı öğreneceksiniz.

c0dc20655d392690.gif

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ır.

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 FCM Kayıt Jetonları toplu olarak abone olmak ve abonelikten çıkmak için Firebase Admin SDK'yı nasıl kullanacağınızı öğreneceksiniz.

FCM Kayıt Belirteçlerinin sunucu tarafı aboneliğini FCM konusuna uygulayın

  1. Sunucu kodunda FcmSubscriptionManager.java sınıfına geçin. subscribeFcmRegistrationTokensToTopic adlı yöntemi bulun. subscribeToTopic ToTopic API çağrısını burada uygulayacaksınız.

5d5709e7b3cbcb04.png

  1. Uygulama örneğini Enerji konusuna abone edelim. Bunu yapmak için öncelikle aşağıdaki iki alan için veri sağlayın:
    1. registrationTokens : Konu abonelikleri oluşturmak istediğiniz FCM Kayıt Belirteçlerini temsil eden virgülle ayrılmış bir dizi listesi.
    2. topicName : Enerji konusunun konu adı, yani /topics/Energy .
  2. Sonraki birkaç satırda, çağrıyı şu satırlar boyunca uygulayın:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Bazı üst düzey sonuç istatistikleri için TopicManagementResponse inceleyebilirsiniz. Örneğin getSuccessCount kullanarak başarıyla oluşturulmuş konu aboneliklerinin sayısını yazdırmak gibi.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Son olarak, main işlevde yalnızca subscribeFcmRegistrationTokensToTopic işlevine yapılan çağrıları etkinleştirin.

Abonelik oluştur ve konu mesajı gönder

  1. Bu noktada konu aboneliği oluşturmaya ve ona bir mesaj göndermeye hazırsınız.
  2. FcmSubscriptionManager.java sınıfının main işlevini yürütün. Bu bir konu aboneliği oluşturacaktır.
  3. Şimdi, mesajı göndermek için kodu ayarlayın. Öncekine benzer,
    1. FcmSender.java sendMessageToFcmTopic işlevini bulun.
    2. Konu topicName Enerji konusuna ayarlayın, yani /topics/Energy .
    3. Bir Message nesnesi oluşturun ve onu setTopic kullanarak konuya hedefleyin.
    4. Son olarak, yalnızca sendMessageToFcmTopic işlevini etkinleştirmek için main yöntemi güncelleyin.
  4. 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.
    1. Uygulama örneği ön planda
    40ab6cf71e0e4116.png
    1. Arka planda uygulama örneği
    8fba81037198209e.png

FCM Kayıt Belirteçlerinin FCM konusuna sunucu tarafı abonelik iptali uygulayın

  1. Sunucu tarafı konu abonelik iptalleri için bu unsubscribeFromTopic API'sini kullanın. İlgili kodu FcmSubscriptionManager.java sınıfının unsubscribeFcmRegistrationTokensFromTopic işlevine ekleyeceksiniz.

8d9e8ea9d34016bd.png

  1. Sunucu tarafı abonelikten çıkma kodunun uygulanması ve konu mesajı göndererek etkisinin doğrulanması 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.

947def3eb33b1e4a.gif

Sıradaki ne?

Codelab'inizi tamamladığınıza göre, aşağıdaki kılavuzları kullanarak diğer platformlar için konuları denemeyi düşünün:

Referans Dokümanlar