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

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

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

fc08f9a7808e4553.png

  1. Google Analytics'i etkinleştirmeyi atlayabilirsiniz. Bu codelab'in amaçları doğrultusunda buna ihtiyacınız yok. Devam'ı tıklayın.
  2. 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.

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

  1. 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: 8254fc299e82f528.png

  1. Sağlanması gereken önemli değer , Android paket adıdır . com.ticker.stocknews olarak ayarlayın.
    1. 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:
      1. StockNewsApp dizininde, app/src/main/AndroidManifest.xml dosyasını açın.
      2. manifest öğesinde, package niteliğinin dize değerini bulun. Bu değer, Android paket adıdır.
  1. Firebase iletişim kutusunda, kopyalanan paket adını Android paket adı alanına yapıştırın.
  2. 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.
  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. 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.
  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 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)

b574ea0089ee87c6.png

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:

4bc64eb3b99eb0ae.png

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.

f04ff8f48d186dff.png

  • AndroidManifest.xml bir MESSAGING_EVENT geri arama işleyicisi zaten eklenmiştir.
    • Bu işleyici StockNewsMessagingService.java , Firebase Bulut Mesajlaşma ile ilgili çeşitli işlevler sağlayan FirebaseMessagingService sınıfını genişletir. Daha fazla bilgi edinmek için FirebaseMessagingService belgelerine bakın. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • 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.
  • Ayrıca, AndroidManifest.xml dosyasında StockNewsApplication adlı bir Android Application sınıfı da sağlanır. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Bu sınıf, Uygulama başladığında örneklenen 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 Jetonu 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 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.

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 emülatörü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 Jetonu oluşturacak ve günlüğe kaydedecektir. Ancak Uygulama kullanıcı 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ı, 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.

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'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

  1. Ö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.
    1. 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. 8c2108d4d7c915e9.png
    2. Ayarlar sayfasında Hizmet hesapları'nı seçin ve Hizmet hesabı oluştur'a 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 onu 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 yolundan yükler. 8dffbee658e0bdd.png
  2. Bu noktada, sunucu kodu hazırdır. Üst menü çubuğundan Build -> Build Project'i çalıştırın.

Test Mesajı Gönderme

  1. FcmSender.java sendMessageToFcmRegistrationToken işlevini bulun ve Run the Starter app bölümünden kopyaladığınız FCM kayıt belirtecini registrationToken alanına ekleyin.
  2. main işlevde, yalnızca sendMessageToFcmRegistrationToken işlevindeki açıklamayı kaldırın ve kodu çalıştırmak için çalıştır'a tıklayın.
    1. FCM Kayıt Belirteci'nin 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 planda olduğunda, günlüğe kaydedilen mesaj içeriğini görmelisiniz.

d3540ec1089f97dd.png

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

31203deca59c03fe.png

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 ve RecyclerViewViewHolder sınıfını bulun.

6c0614199e684f6.png

  • 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 ve unsubscribeFromStockCategory 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ın onBindViewHolder tarafından çağrılır.

Konu aboneliğini uygula

  1. subscribeToStockCategory yönteminde, FirebaseMessaging nesnesinin subscribeToTopic 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

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

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

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

56381dd1b40cde9c.png

  1. İlk satırda, mesajı göndermek istediğiniz FCM Konusunu girin.
    • Ş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ı ayarlayacağınız olacaktır.
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 FirebaseMessaging örneğine çağrıyı ekleyin ( sendMessageToFcmRegistrationToken işlevinde yapılan gönderme çağrısıyla aynı).
FirebaseMessaging.getInstance().send(message);
  1. Son olarak, main işlevi güncelleyin ve çağrıyı yalnızca sendMessageToFcmTopic işlevine etkinleştirin.

9a6aa08dd7c28898.png

Mesaj gönder ve makbuzu onayla

  1. Konu mesajını göndermeden önce, uygulama örneğinizin, göndermek istediğiniz konuya abone olduğundan emin olun.
    1. Bu, karşılık gelen geçişin çevrilmesiyle yapılabilir. Örneğin:
    4668247408377712.png
  2. Artık FcmSender.java main işlevini çalıştırarak konu mesajınızı gönderebilirsiniz.
  3. Daha önce olduğu gibi, uygulama örneğinde mesaj makbuzunu gözlemleyebilmeniz gerekir.
    1. Uygulama örneği ön planda
    c144721399f610fe.png
    1. Arka planda uygulama örneği
    44efc7dfd57e8e9a.png
  4. 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

  1. Sunucu koduna geri dönün, FcmSender.java atlayın 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 girin. 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ı ayarlayacağınız olacaktır.
    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 FirebaseMessaging örneğine çağrıyı ekleyin ( sendMessageToFcmTopic işlevinde yapılan gönderme çağrısıyla aynı).
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 FcmSender.java main işlevini çalıştırarak konu mesajınızı gönderebilirsiniz.
  3. Daha önce olduğu gibi, uygulama örneğinde mesajın alındığını gözlemleyebilmeniz gerekir.
    1. Uygulama örneği ön planda
    6f612ace15aa6515.png
    1. Arka planda uygulama örneği
    78044a56ac2359cb.png
  4. 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.

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

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

5d5709e7b3cbcb04.png

  1. Uygulama örneğini Enerji konusuna abone olalım. 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 dize listesi.
    2. topicName : Enerji konusu için konu adı, yani /topics/Energy .
  2. Sonraki birkaç satırda, şu satırlar boyunca çağrıyı uygulayın:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. 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());
  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ğini 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. Daha önce benzer,
    1. FcmSender.java sendMessageToFcmTopic işlevini bulun.
    2. topicName öğesini Energy 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 Konusuna FCM Kayıt Belirteçlerinin sunucu tarafında abonelik iptalini uygulayın

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

8d9e8ea9d34016bd.png

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

947def3eb33b1e4a.gif

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:

Referans Dokümanlar