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

1. Giriş

Hedefler

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

Bitirdiğinizde, bu alt grupları ve alt gruplar üzerinden çok noktaya yayın push mesajlarını yönetmek için FCM altyapısından yararlanabileceksiniz.

Konulara Genel Bakış

Konular, uygulama örneklerinizin alt gruplarına mesajlarla ulaşmanın FCM altyapısı tarafından desteklenen bir yoludur.

FCM, API'lerin mesaj göndermesini ve bu konulara yönelik abonelikleri sürdürmesini sağlar. Bir uygulama örneğini konuyla ilişkilendirme ve ayırma işlemine sırasıyla abone olma ve abonelikten çıkma adı verilir

Konular halka açık içerik için kullanılmalıdır. Örneğin, hava durumu güncellemeleriyle ilgili mesajlar. Kullanıcıya duyarlı mesajlar göndermek istiyorsanız mesajları birden çok cihaza yayınlamak için Firebase Admin SDK'yı kullanın.

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

Ne öğreneceksin

  • Kullanıcıların bir mobil uygulamadaki konulara abone olma (ve abonelikten çıkma) işlemleri.
  • Konuları kullanarak çok noktaya yayın push mesajları nasıl gönderilir?
  • Konu koşullarını kullanarak konuların bir kombinasyonuna nasıl mesaj gönderilir?
  • Sunucu tarafında konu abonelikleri nasıl yönetilir, toplu abonelikler ve abonelik iptalleri nasıl yapılır.

Ne inşa edeceksin

  • Konulara abone olan/abonelikten çıkan ve konulara gönderildiğinde mesaj alan bir Android Uygulaması.
  • Konu mesajlarını FCM API'leri aracılığıyla göndermek için kullanılacak, Firebase Yönetici SDK'sını kullanan sunucu tarafı entegrasyonu.

İhtiyacınız olan şey

  • Chrome gibi seçtiğiniz bir tarayıcı.
  • Java uygulamaları geliştirmek için IntelliJ IDEA IDE.
    • Kurulum sırasında Gradle desteğini etkinleştirdiğinizden emin olun.
  • Android uygulamaları geliştirmek için Android Studio IDE.
  • Android uygulamasını çalıştıracak bir cihaz. Bir digeri:
    • Android emülatörü. ( Android Studio'da kurulum gerektirir).
    • Bilgisayarınıza bağlı ve geliştirici moduna ayarlanmış fiziksel bir Android cihazı.
  • Firebase projenizi oluşturmak ve yönetmek için bir Google hesabı.

2. Kurulum

Kodu al

GitHub deposunu komut satırından kopyalayın:

git clone https://github.com/firebase/quickstart-android.git fcm-codelab

Örnek kod fcm-codelab dizinine kopyalanacaktır.

cd fcm-codelab

Bu codelab'in başlangıç ​​uygulaması fcm-topics-codelab şubesinin messaging dizinindedir. Başlangıç ​​koduna ulaşmak için aşağıdaki adımları izleyin. StockNewsApp ve StockNewsServer olmak üzere iki dizin içerir. İlki, başlangıç ​​Android Uygulamasını içerir ve ikincisi, başlangıç ​​sunucusunun yan kodunu içerir.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

Bu codelab'in tamamlanmış sürümü messaging/fcm-topics-codelab/completed dizinine yerleştirilir.

Firebase projesi oluşturma

  1. Firebase konsolunda Proje ekle'yi tıklayın, Firebase projesine StockNews adını verin ve devam et'i tıklayın. Not: Firebase projenizin Proje Kimliğini unutmayın (veya tercih ettiğiniz Proje Kimliğini ayarlamak için Düzenle simgesini tıklayın).

fc08f9a7808e4553.png

  1. Google Analytics'i etkinleştirmeyi atlayabilirsiniz. Bu codelab'in amaçları açısından buna ihtiyacınız yoktur. Devam'ı tıklayın.
  2. Proje oluştur'u tıklayın.

Tebrikler! Firebase projenizi yeni oluşturdunuz. Artık konsola girmek için proje adına tıklayabilirsiniz.

3. Platforma özel Firebase uygulama yapılandırması

Firebase desteğini etkinleştirmek için gereken kod değişikliklerinin çoğu, üzerinde çalıştığınız projeye zaten eklenmiştir. Ancak mobil platformlara destek eklemek için şunları yapmanız gerekir:

  • İstediğiniz platformu Firebase projesine kaydedin
  • Platforma özel yapılandırma dosyasını indirin ve koda ekleyin.

Bu codelab'in amaçları doğrultusunda bir Android Firebase uygulaması ekleyeceğiz.

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ında Uygulamalarınız altında 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ı, StockNewsApp başlangıç ​​kodunuzun AndroidManifest.xml dosyasında sağlanan adla aynı olmalıdır. Bunu bulmak veya değiştirmek istiyorsanız şu adımları izleyin:
      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 uygulama yayınlanmayacağından bu codelab için Hata Ayıklama imzalama sertifikası SHA-1'e ihtiyacınız yok. Bunu boş bırakın.
  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ıç ​​uygulama kodunda zaten yapılandırılmış olduğundan, kalan kurulum adımlarını atlayabilirsiniz. Uygulamanızı Firebase Konsolunun ana sayfasında listelenmiş olarak bulacaksınız.
  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 gerçekten başlamaya hazırsınız! Öncelikle uygulamayı derleyin ve çalıştırın.

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

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

Proje yüklendikten sonra Git'in tüm yerel değişikliklerinizi takip etmediğine dair bir uyarı da görebilirsiniz; " Yoksay " veya sağ üstteki " X " işaretine tıklayabilirsiniz. (Herhangi bir değişikliği Git deposuna geri göndermeyeceksiniz.)

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

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 kısmı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 almasına olanak tanıyacaktır.

Ayrıca, "Dil değişikliklerinin etkili olması için yeniden yüklensin mi?" diyen bir uyarı alırsanız veya benzer bir şey için "Evet"i seçin.

Emülatör Kurulumu

Android öykünücüsü kurma konusunda yardıma ihtiyacınız varsa Uygulamanızı çalıştırma makalesine bakın.

Android Uygulaması başlangıç ​​kodunu anlayın

  • Başlangıç ​​kodu, minimum işlevselliğe ve kullanıcı arayüzüne sahip hafif bir Android Uygulamasıdır.
  • Firebase mesajlaşma SDK'sına bağımlılık app/build.gradle dosyasına zaten eklenmiştir.

f04ff8f48d186dff.png

  • AndroidManifest.xml dosyasına bir MESSAGING_EVENT geri çağırma işleyicisi zaten eklenmiştir.
    • StockNewsMessagingService.java adlı bu işleyici, Firebase Cloud Messaging ile ilgili çeşitli işlevler sağlayan FirebaseMessagingService sınıfını genişletir. Daha fazla bilgi edinmek için FirebaseMessagingService belgelerine bakın. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • FCM Kayıt Belirteci oluşturulduğunda veya yenilendiğinde onNewToken işlevi çağrılır. Daha fazla bilgi için Belirteç oluşturmayı izleme konusuna bakın.
    • onMessageReceived işlevi, bir mesaj alındığında ve uygulama ön planda olduğunda çağrılır. Şu anda yalnızca alınan mesajı günlüğe kaydediyor.
  • Ayrıca AndroidManifest.xml dosyasında StockNewsApplication adında bir Android Application sınıfı da sağlanmaktadır. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Bu sınıf, Uygulama başlatıldığında başlatılacak ilk sınıf olacaktır.
    • StockNewsApplication sınıfının onCreate işlevine, bir FCM Kayıt Belirteci oluşturma çağrısı eklenir. Geçerli bir FCM Kayıt Belirteci oluşturacak ve bunu günlüğe kaydedecektir.
  • MainActivity.java , Stok Kategorisi seçeneklerini görüntüleyen RecyclerView ekler.
  • SubscriptionAdapter.java Stok Kategorisi seçim ekranını çizen RecyclerView.Adapter uygular.
    • Her Hisse Senedi Kategorisinin bir adı ve yanında bir abonelik düğmesi bulunur.
    • Geçişin değiştirilmesi, bir FCM konu aboneliği / abonelikten çıkma çağrısı yapmalıdır.
    • Bu çağrıları ilerleyen bölümlerde uygulayacaksınız.
  • model/StockCategories.java sınıfı, tüm Hisse Senedi Kategorilerinin ve bunlarla ilişkili konu adlarının bir listesini içerir.

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 Belirteci oluşturacak ve bunu 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ıp kaydedin.

927eb66bc909f36b.png

5. Test Mesajı Gönderin

Artık son adımda kurduğunuz uygulama örneğine bir test mesajı göndermeye hazırsınız.

Başlangıç ​​sunucusu kodunu içe aktarın

IntelliJ IDEA'yı başlatın ve messaging/fcm-topics-codelab/starter/StockNewsServer projesini açın.

Sol gezinme çubuğunuzdaki proje görünümü şunun gibi görünmelidir:

da20711f6527dff6.png

Gerekli bağımlılıkların çekilmesi de dahil olmak üzere IntellIj IDEA'nın projenizi oluşturmasının birkaç dakika sürebileceğini unutmayın.

Sunucu başlangıç ​​kodunu anlayın

  • Sunucu başlangıç ​​kodu Gradle tabanlı bir Java projesidir.
  • build.gradle dosyası zaten kendisine eklenen firebase-admin SDK'sına bağımlıdır. Bu SDK, çeşitli FCM mesaj gönderme işlevlerine erişim sağlar.

650fc733298588f8.png

  • Son olarak iki sınıf vardır:
    • FcmSender.java : Bu sınıf aşağıdaki not yöntemlerini içerir:
      • initFirebaseSDK : Firebase-admin SDK'sını başlatır.
      • sendMessageToFcmRegistrationToken : FCM Kayıt Simgesine bir mesaj gönderin.
      • sendMessageToFcmTopic : FCM konusuna mesaj gönderin.
      • sendMessageToFcmTopicCondition : FCM konu koşuluna bir mesaj gönderin.
    • FcmSubscriptionManager.java : Bu sınıf, konu aboneliklerinin sunucu tarafından yönetilmesine izin veren yöntemleri içerir.
      • initFirebaseSDK : Firebase-admin SDK'sını başlatır.
      • subscribeFcmRegistrationTokensToTopic : FCM Kayıt Jetonlarını bir FCM konusuna abone olun.
      • unsubscribeFcmRegistrationTokensFromTopic : Bir FCM konusundan FCM Kayıt Belirteçlerinin aboneliğini iptal edin.

Sunucu kodunu ayarlama

  1. Öncelikle, firebase-admin SDK'sının FCM API'lerine çağrıları yetkilendirmesine olanak tanıyan bir Firebase Hizmet Hesabı kurmamız gerekiyor.
    1. Firebase Konsolu'na gidin, sol gezinme çubuğunda Projeye Genel Bakış'ın yanındaki dişli çark simgesini tıklayın ve Proje ayarları'nı seçin. 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; anahtar dosyanızın otomatik olarak indirilmesi başlayacaktır.
    4. Anahtar dosyasını service-account.json olarak yeniden adlandırın ve 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 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 kayıt belirtecini registrationToken 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'a tıklayın.
    1. FCM Kayıt Belirtecinin 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 bildirim tepsisinde göründüğünü görürsünüz.

31203deca59c03fe.png

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

6. Konu Aboneliğini/Aboneliği İptal Etmeyi Uygulayın

Bu adımda, Android Uygulamasının Hisse Senedi Kategorisi geçiş düğmesinde konu aboneliği ve abonelikten çıkma işlemlerini uygulayacaksınız.

Bir Uygulama kullanıcısı belirli bir Hisse Senedi Kategorisi için geçiş yaptığında, bir konu aboneliği veya abonelikten çıkma çağrısı yapılacaktır.

Kodu incele

  • Android Uygulama kodundaki SubscriptionAdapter.java sınıfına gidin 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.
  • 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, ViewHolder'ı uygun Stok Kategorisine bağlamak için RecyclerView Adapter'ın onBindViewHolder tarafından çağrılır.

Konu aboneliğini uygulayın

  1. subscribeToStockCategory yönteminde, FirebaseMessaging nesnesinin subscribeToTopic API'sine yönelik çağrıyı uygulayacaksınız. Kod şöyle görünebilir:
   void subscribeToStockCategory() {
      // Making call to FCM for subscribing to the topic for stockCategory
     FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
          unused -> {
            // Subscribing action successful
            Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Konu aboneliğini iptal etme işlemini uygulayın

  1. Benzer şekilde, else koşulunda unsubscribeFromTopic API çağrısını uygulayacaksınız. Aşağıdakilere benzer bir şey:
void unsubscribeFromStockCategory() {
      // Making call to FCM for unsubscribing from the topic for stockCategory
      FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
          .addOnSuccessListener(unused -> {
            // Unsubscribing action successful
            Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Haydi deneyelim

  1. Uygulamayı çalıştırın ve Abone Ol ve Abonelikten Çık eylemlerini yürütmek için Hisse Senedi Kategorisi seçeneklerini değiştirin. Bunun gibi bir şeye benzeyecek:

Abone

Abonelikten çık

7. İlk Konu Mesajınızı Gönderme

Bu adımda, bir FCM konu mesajı göndermek için sunucu tarafı kodunu uygulayacaksınız.

Konu mesajını göndermek için sunucu tarafı entegrasyonunu uygulayın

  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 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).
    • Aradaki fark, message nesnesinin Token alanını ayarlamak yerine Topic alanını ayarlamanı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 çağrıyı FirebaseMessaging örneğine 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 yalnızca sendMessageToFcmTopic işlevine çağrıyı etkinleştirin.

9a6aa08dd7c28898.png

Mesaj gönder ve alındıyı doğrula

  1. Konu mesajını göndermeden önce öncelikle uygulama örneğinizin göndermek istediğiniz konuya abone olduğundan emin olun.
    1. Bu, ilgili düğmenin ç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 alındığını gözlemleyebilmelisiniz.
    1. Ön planda uygulama örneği
    c144721399f610fe.png
    1. Arka planda uygulama örneği
    44efc7dfd57e8e9a.png
  4. Bonus: Gönderdiğiniz konunun aboneliğinden çıkıp mesajı yeniden göndermeyi deneyin. Mesajın uygulama örneğine teslim edilmediğini gözlemleyeceksiniz.

8. İlk Konu Durumu Mesajınızın Gönderilmesi

Konu koşulu özelliği, daha anlamlı hedef kitle tanımı sağlamanıza olanak tanıyan konuların bir kombinasyonuna mesaj göndermenize olanak tanır.

Örneğin StockNews Uygulamamızda, Teknoloji veya Otomotiv konularına abone olan bir grup uygulama örneğine mesaj gönderme olasılığını düşünün. Örneğin Waymo'nun dahil olduğu kayda değer bir olay söz konusu olduğunda böyle bir durum ortaya çıkabilir.

Konular, aşağıdaki operatörleri kullanarak kombinasyonunuzu boole ifadesi biçiminde ifade etmenize olanak tanır

  • && : Mantıksal VE. Örneğin, 'Technology' in topics && 'Automotive' in topics - Yalnızca hem Teknoloji hem de Otomotiv Konularına abone olan uygulama örneklerini hedefler.
  • || : Mantıksal VEYA. Örneğin, 'Technology' in topics || 'Automotive' in topics - Teknoloji veya Otomotiv konularına abone olan uygulama örneklerini hedefler.
  • () : Gruplama için parantezler. Örneğin, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - Yalnızca Teknoloji ve Otomotiv veya Enerji konularına abone olan uygulama örneklerini hedefler.

Bu işlevselliği kullanmak için gönderme isteklerinin nasıl oluşturulacağı hakkında daha fazla bilgi edinin.

Konu durumu mesajını göndermek için sunucu tarafı entegrasyonunu uygulayın

  1. Sunucu koduna geri döndüğünüzde FcmSender.java geçin 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. Aradaki fark, nesnenin Topic alanını ayarlamak yerine Condition alanını ayarlamanı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 çağrıyı FirebaseMessaging örneğine 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 yalnızca sendMessageToFcmTopicCondition işlevine çağrıyı etkinleştirin.

db9588d40d2a0da6.png

Mesajı gönderin ve alındıyı doğrulayın

  1. Konu mesajını göndermeden önce, uygulama örneğini hem Teknoloji hem de Otomotiv konularına abone ederek uygulama örneğinizin belirtilen konu koşulunu karşıladığından emin olun.
  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 alındığını gözlemleyebilmelisiniz.
    1. Ön planda uygulama örneği
    6f612ace15aa6515.png
    1. Arka planda uygulama örneği
    78044a56ac2359cb.png
  4. Bonus: Artık Teknoloji konusu aboneliğinden çıkabilir ve konu durumu mesajını yeniden gönderebilirsiniz. Mesajın uygulama örneği tarafından alınmadığını gözlemlemelisiniz.

9. Özet

Bu noktaya kadar öğrendiklerinizi kısaca özetleyelim.

  • Bir uygulama örneğinden konu aboneliği/abonelikten çıkma nasıl başlatılır.
  • Konuya bir mesaj gönderme ve abone olunan uygulama örneklerinin alındığını doğrulama.
  • Bir konuya koşula mesaj gönderme ve koşulu karşılayan bir uygulama örneğindeki alındının doğrulanması.

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

c0dc20655d392690.gif

10. Konu Aboneliklerini Sunucu Tarafından Yönetin

Şimdiye kadar bu codelab'de tüm konu abonelikleri ve abonelikten çıkma çağrıları bir uygulama örneğinden başlatılıyordu.

Ancak bazı kullanım durumlarında konu aboneliklerini Sunucu Tarafından yönetmek isteyebilirsiniz. Örneğin, mevcut kullanıcı tabanınızın bir alt grubunu, uygulamanın kullanıma sunulmasını beklemeden yeni bir konuya abone olmak isteyebilirsiniz.

Bu bölümde, sunucu tarafından çağrılar yaparak bir konuya yönelik bir grup FCM Kayıt Jetonuna abone olmak ve aboneliğinizi iptal etmek için Firebase Yönetici SDK'sını nasıl kullanacağınızı öğreneceksiniz.

FCM Kayıt Jetonlarının sunucu tarafı aboneliğini FCM konusuna uygulayın

  1. Sunucu kodunda FcmSubscriptionManager.java sınıfına geçin. subscribeFcmRegistrationTokensToTopic adlı yöntemi bulun. Burada subscribeToTopic API çağrısını 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 dizelerin virgülle ayrılmış 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. Başarılı bir şekilde oluşturulan konu aboneliklerinin sayısını getSuccessCount kullanarak yazdırmak gibi.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Son olarak, main işlevde yalnızca subscribeFcmRegistrationTokensToTopic işlevine çağrıları etkinleştirin.

Abonelik oluştur ve konu mesajı gönder

  1. Bu noktada konu aboneliğini oluşturmaya ve ona 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 olduğu gibi,
    1. FcmSender.java dosyasında sendMessageToFcmTopic işlevini bulun.
    2. topicName Enerji konusuna ayarlayın, yani /topics/Energy .
    3. Bir Message nesnesi oluşturun ve bunu setTopic kullanarak konuya hedefleyin.
    4. Son olarak, main yöntemi yalnızca sendMessageToFcmTopic işlevini etkinleştirecek şekilde güncelleyin.
  4. FcmSender.java main işlevini yürütün. Bu, mesajı uygulama örneğinize gönderecektir ve bunu uygulamanızda aşağıdaki gibi gözlemleyebilirsiniz.
    1. Ön planda uygulama örneği
    40ab6cf71e0e4116.png
    1. Arka planda uygulama örneği
    8fba81037198209e.png

FCM Kayıt Jetonlarının sunucu tarafı aboneliğini FCM konusuna kaldırmayı uygulayın

  1. Sunucu tarafı konu aboneliklerini iptal etmek 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ı abonelikten çıkma kodunu uygulamak ve konu mesajı göndererek etkisini doğrulamak size bir alıştırma olarak bırakılmıştır.

11. Tebrikler

Tebrikler, uygulama örneklerinizin alt gruplarına çok noktaya yayın mesajları göndermek için FCM konularını başarıyla kullandınız. Bu, alakalı içerikle kullanıcılarınıza zamanında ulaşma yeteneğinizi basitleştirmenize yardımcı olacaktır.

947def3eb33b1e4a.gif

Sıradaki ne?

Artık codelab'inizi tamamladığınıza göre, aşağıdaki kılavuzları kullanarak diğer platformlara yönelik konuları denemeyi düşünün:

Referans Dokümanları