FCM konularını kullanan ilk çoklu yayın push mesajınız

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

  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ştirme adımını atlayabilirsiniz. Bu codelab'in amaçları açısından ihtiyacınız yoktur. Devam'ı tıklayın.
  2. 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.

84e0b3199bef6d8a.pngAndroid'i yapılandır

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

  1. Sağlanması gereken önemli değer Android paket adıdır. com.ticker.stocknews olarak ayarla.
    1. 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:
      1. StockNewsApp dizininde app/src/main/AndroidManifest.xml dosyasını açın.
      2. manifest öğesinde, package özelliğ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ı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.
  3. Uygulamayı Kaydet'i tıklayın.
  4. Firebase konsolunda devam ederek google-services.json yapılandırma dosyasını indirme talimatlarını uygulayın.
  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 Konsolu'nun ana sayfasında listelenir.
  6. 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)

b574ea0089ee87c6.png

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:

4bc64eb3b99eb0ae.png

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

f04ff8f48d186dff.png

  • AndroidManifest.xml içinde bir MESSAGING_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. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • 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.
  • Ayrıca AndroidManifest.xml ürününde StockNewsApplication adlı bir Android Application sınıfı da sağlanmaktadır. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Bu sınıf, Uygulama başlatıldığında örneklenecek ilk sınıf olacak.
    • StockNewsApplication sınıfının onCreate 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österen RecyclerView özelliğini ekler.
  • SubscriptionAdapter.java, Stok Kategorisi seçim ekranını çeken RecyclerView.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.

b32663ec4e865a18.png

Başlangıç uygulamasını çalıştırma

  1. Android cihazınızı bilgisayarınıza bağlayın veya bir emülatör başlatın.
  2. Ü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.

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şturur ve bunu günlüğe kaydeder. Ancak uygulamanın kullanıcı arayüzünde herhangi bir değişiklik olmayacak.
    1. Sonraki adımlarda kullanılacağı şekilde FCM Kayıt Jetonunu kopyalayıp kaydedin.

927eb66bc909f36b.png

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:

da20711f6527dff6.png

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.

650fc733298588f8.png

  • 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

  1. Ö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.
    1. 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. 8c2108d4d7c915e9.png
    2. Ayarlar sayfasında Hizmet hesapları'nı seçin ve Hizmet hesabı oluştur'u tıklayın. 84b128cc5dac0a85.png
    3. Yeni özel anahtar oluştur düğmesini tıkladığınızda anahtar dosyanız otomatik olarak indirilmeye başlar.
    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, service-account.json dosyasını aşağıdaki kodu kullanarak sınıf yolundan yükler. 8dffbee658e0bdd.png
  2. Bu noktada, sunucu kodu hazırdır. Derlemeyi Çalıştırın -> Üst menü çubuğundan Proje derleyin.

Test Mesajı Gönderme

  1. FcmSender.java içinde sendMessageToFcmRegistrationToken işlevini bulun ve Başlangıç uygulamasını çalıştırma bölümünden kopyaladığınız FCM kayıt jetonunu registrationToken alanına girin.
  2. main işlevinde, yalnızca sendMessageToFcmRegistrationToken işlevinin açıklamasını kaldırın ve kodu yürütmek için Çalıştır'ı tıklayın.
    1. FCM Kayıt Jetonunun, message nesnesinin Token alanında nasıl ayarlandığına dikkat edin.
    2. Ayrıca, FirebaseMessaging arayüzünün send API'sini nasıl kullandığımıza da dikkat edin.

52e4a3ec3f816473.png

  1. Bu işlem, önceki adımda ayarladığınız uygulama örneğine bir mesaj göndermelidir.
  2. Uygulama örneği ön plandayken günlüğe mesaj içeriği kaydedildiğini görürsünüz.

d3540ec1089f97dd.png

  1. Uygulama örneği arka plandayken de bildirim tepsisinde mesajın görüntülendiğini görürsünüz.

31203deca59c03fe.png

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

6c0614199e684f6.png

  • 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 ve unsubscribeFromStockCategory 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

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

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

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

  1. Sunucu kodunda, FcmSender.java bölümüne gidin ve sendMessageToFcmTopic adlı yöntemi bulun.

56381dd1b40cde9c.png

  1. İ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.
  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ı ayarlarsınız.
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 yapılan çağrıyı ekleyin (sendMessageToFcmRegistrationToken işlevinde yapılan gönderme çağrısıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
  1. Son olarak, main işlevini güncelleyin ve çağrıyı yalnızca sendMessageToFcmTopic işlevini etkinleştirin.

9a6aa08dd7c28898.png

Mesaj gönderme ve makbuzu doğrulama

  1. Konu mesajını göndermeden önce uygulama örneğinizin, göndermek istediğiniz konuya abone olduğundan emin olun.
    1. Bu işlem, ilgili açma/kapatma düğmesini çevirerek yapılabilir. Örneğin:
    4668247408377712.png
  2. Artık konu mesajınızı, FcmSender.java öğesinin main işlevini çalıştırarak gönderebilirsiniz.
  3. Daha önce olduğu gibi, uygulama örneğinde mesaj alımını görebiliyor olmalısınız.
    1. Ön planda uygulama örneği
    c144721399f610fe.png
    1. Arka plandaki uygulama örneği
    44efc7dfd57e8e9a.png
  4. 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

  1. Sunucu koduna geri dönün, FcmSender.java bölümüne gidin 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 sağlayın. Şu değere 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ı ayarlarsınız.
    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 yapılan çağrıyı ekleyin (sendMessageToFcmTopic işlevinde yapılan gönderme çağrısıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
  1. Son olarak, main işlevini güncelleyin ve çağrıyı yalnızca sendMessageToFcmTopicCondition işlevini etkinleştirin.

db9588d40d2a0da6.png

Mesajı gönderme ve makbuzu doğrulama

  1. 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.
  2. Artık konu mesajınızı, FcmSender.java öğesinin main işlevini çalıştırarak gönderebilirsiniz.
  3. Daha önce olduğu gibi, uygulama örneğinde mesaj alımını görebiliyor olmalısınız.
    1. Ön planda uygulama örneği
    6f612ace15aa6515.png
    1. Arka plandaki uygulama örneği
    78044a56ac2359cb.png
  4. 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.

c0dc20655d392690.gif

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

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

5d5709e7b3cb04.png

  1. Uygulama örneğini Enerji konusuna abone olalım. Bunun için öncelikle aşağıdaki iki alana ait verileri girin:
    1. registrationTokens: Konu abonelikleri oluşturmak istediğiniz FCM Kayıt Jetonlarını temsil eden dizelerin virgülle ayrılmış listesi.
    2. topicName: Enerji konusunun konu adı, ör. /topics/Energy.
  2. Sonraki birkaç satırda, aşağıdaki satırlarda çağrı uygulanır:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. 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());
  1. Son olarak, main işlevinde yalnızca subscribeFcmRegistrationTokensToTopic işlevine yapılan çağrıları etkinleştirir.

Abonelik oluşturma ve konu mesajı gönderme

  1. Bu noktada, konu aboneliğini oluşturmaya ve buna bir ileti göndermeye hazırsınızdır.
  2. FcmSubscriptionManager.java sınıfının main işlevini yürütün. Bu, bir konu aboneliği oluşturur.
  3. Şimdi, mesajı göndermek için kodu ayarlayın. Öncekine benzer şekilde,
    1. FcmSender.java içinde sendMessageToFcmTopic işlevini bulun.
    2. topicName özelliğini Enerji konusuna ayarlayın. /topics/Energy.
    3. Bir Message nesnesi oluşturun ve setTopic kullanarak bunu konuya hedefleyin.
    4. Son olarak, main yöntemini yalnızca sendMessageToFcmTopic işlevini etkinleştirecek şekilde güncelleyin.
  4. FcmSender.java öğesinin main işlevini yürütün. Bu işlemle mesaj, uygulama örneğinize gönderilir ve uygulamanızda aşağıdaki şekilde gözlemleyebilirsiniz.
    1. Ön planda uygulama örneği
    40ab6cf71e0e4116.png
    1. Arka plandaki uygulama örneği
    8fba81037198209e.png

FCM Kayıt Jetonları için sunucu tarafı aboneliğinden FCM konusuna yönelik kaldırma işlemini uygulama

  1. Sunucu tarafı konu aboneliklerini iptal etmek için bu unsubscribeFromTopic API'yi kullanın. İlgili kodu, FcmSubscriptionManager.java sınıfının unsubscribeFcmRegistrationTokensFromTopic işlevine ekleyeceksiniz.

8d9e8ea9d34016bd.png

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

947def3eb33b1e4a.gif

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:

Referans Belgeler