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ı yayınlayabilmeniz için çok platformlu uygulamanızı nasıl izleyeceğinizi öğreneceksiniz.

İşlem tamamlandığında, bu alt grupları yönetmek ve alt gruplar üzerinden çok noktalı push mesajları göndermek için FCM altyapısından yararlanabilirsiniz.

Konulara Genel Bakış

Konular, FCM altyapısı tarafından desteklenen ve uygulama örneklerinizin alt gruplarına mesajlarla ulaşmanızı sağlayan bir yöntemdir.

FCM, mesaj göndermek ve bu konulara abonelikleri sürdürmek için API'ler sağlar. Bir uygulama örneğini konuyla ilişkilendirme ve ilişkilendirmeyi kaldırma işlemine sırasıyla abone olma ve abonelikten çıkma adı verilir.

Konular, herkese açık içeriklerde kullanılmalıdır. Örneğin, hava durumu güncellemeleriyle ilgili mesajlar. Kullanıcıya duyarlı mesajlar göndermek istiyorsanız mesajları birden fazla cihazda çoklu yayınlamak için Firebase Admin SDK'sını kullanın.

Konulara dayalı çoklu yayın, işleme hızı için optimize edilmiştir.

Neler öğreneceksiniz?

  • Kullanıcıları mobil uygulamadan konulara abone etme (ve abonelikten çıkarma)
  • Konuları kullanarak çoklu yayın push mesajları gönderme
  • Konu koşullarını kullanarak bir konu kombinasyonuna nasıl mesaj gönderilir?
  • Konu aboneliklerini sunucu tarafında yönetme ve toplu abonelik ile abonelikten çıkma işlemlerini gerçekleştirme

Ne oluşturacaksınız?

  • Konulara abone olan/abonelikten çıkan ve konulara gönderilen mesajları alan bir Android uygulaması.
  • FCM API'leri aracılığıyla konu mesajları göndermek için kullanılacak Firebase Admin SDK'yı kullanan bir sunucu tarafı entegrasyonu.

Gerekenler

  • Chrome gibi istediğ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 Aşağıdakilerden biri:
    • 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. Hazırlanma

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 olmak üzere iki dizin içerir. Birincisi başlangıç 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. Google Hesabınızı kullanarak Firebase konsolunda oturum açın.
  2. Yeni bir proje oluşturmak için düğmeyi tıklayın ve ardından bir proje adı girin (örneğin, StockNews).
  3. Devam'ı tıklayın.
  4. İstenirse Firebase şartlarını inceleyip kabul edin ve Devam'ı tıklayın.
  5. (İsteğe bağlı) Firebase konsolunda yapay zeka yardımını etkinleştirin ("Firebase'de Gemini" olarak adlandırılır).
  6. Bu codelab için Google Analytics'e ihtiyacınız yoktur. Bu nedenle, Google Analytics seçeneğini devre dışı bırakın.
  7. Proje oluştur'u tıklayın, projenizin hazırlanmasını bekleyin ve ardından Devam'ı tıklayın.

Tebrikler! Firebase projenizi yeni oluşturdunuz.

3. Platforma özel Firebase uygulaması 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 platformlar için destek eklemek istiyorsanız:

  • İstediğiniz platformu Firebase projesine kaydedin.
  • Platforma özgü yapılandırma dosyasını indirip koda ekleyin.

Bu codelab'de Android Firebase uygulaması ekleyeceğiz.

84e0b3199bef6d8a.pngAndroid'i yapılandırma

  1. Firebase Console'da, Ayarlar dişlisindeki sol gezinme çubuğunun üst kısmında Proje Ayarları'nı seçin ve Genel sayfasındaki Uygulamalarınız bölümünde Android simgesini tıklayın.

Aşağıdaki iletişim kutusunu görmeniz gerekir : 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 bölümünde sağlananla aynı olmalıdır. Bu ayarı bulmak veya değiştirmek için 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 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 Debug signing certificate SHA-1'e ihtiyacınız yoktur. Bu alanı boş bırakın.
  3. Register App'i (Uygulamayı Kaydet) tıklayın.
  4. Firebase konsolunda devam ederek yapılandırma dosyasını indirme talimatlarını uygulayın google-services.json.
  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 Console'un ana sayfasında listelenir.
  6. Yeni 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şlamaya hazırsınız. Öncelikle 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 dosyasını içe aktarın.

Proje yüklendikten sonra Git'in tüm yerel değişikliklerinizi izlemediğine dair bir uyarı da görebilirsiniz. Bu durumda sağ üstteki "Yoksay"ı veya "X"i tıklayabilirsiniz. (Değişiklikleri Git deposuna geri göndermezsiniz.)

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

b574ea0089ee87c6.png

Android Studio'nun projeyi ilk kez arka planda 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 yükleme simgesi görürsünüz:

4bc64eb3b99eb0ae.png

Kod değişiklikleri yapmadan önce bu işlemin tamamlanmasını beklemenizi öneririz. Bu işlem, Android Studio'nun gerekli tüm bileşenleri çekmesine olanak tanır.

Ayrıca, "Dil değişikliklerinin geçerli olması için yeniden yükle?" gibi bir istem alırsanı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 başlıklı makaleyi inceleyin.

Android uygulama başlangıç kodunu anlama

  • 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-messaging SDK'sına bağımlılık zaten eklenmiş olmalıdır.

f04ff8f48d186dff.png

  • AndroidManifest.xml içinde MESSAGING_EVENT geri çağırma 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 edinmek için FirebaseMessagingService dokümanlarına göz atın. b843c4d33ee53166.png
    88fad1960f4a6ff5.png * FCM kayıt jetonu oluşturulduğunda veya yenilendiğinde "onNewToken" işlevi çağrılır. Daha fazla bilgi için [Jeton oluşturma işlemini izleme](https://firebase.google.com/docs/cloud-messaging/android/client#monitor-token-generation) başlıklı makaleyi inceleyin. * 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ı kaydeder. * Arka planda ve ön planda ileti teslimi ile işleme arasındaki farklar hakkında daha fazla bilgi edinmek için [Android uygulamasında ileti alma](https://firebase.google.com/docs/cloud-messaging/android/receive) başlıklı makaleyi inceleyin.
  • Ayrıca, AndroidManifest.xml içinde StockNewsApplication adlı bir Android Application sınıfı da sağlanır. a4982a8731492dfc.png ccde692f7f68dc5a.png * Bu sınıf, uygulama başlatıldığında oluşturulan ilk sınıf olur. * `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 bunu günlüğe kaydeder.
  • MainActivity.java, Stok Kategorisi seçeneklerini gösteren RecyclerView öğesini ekler.
  • SubscriptionAdapter.java, Stok Kategorisi seçim ekranını çizen RecyclerView.Adapter öğesini uygular.
    • Her stok kategorisinin bir adı ve yanında bir abonelik açma/kapatma düğmesi bulunur.
    • Açma/kapatma düğmesinin değiştirilmesi, FCM konu aboneliği/abonelikten çıkma çağrısı yapmalıdır.
    • Bu çağrıları sonraki bölümlerde uygulayacaksınız.
  • model/StockCategories.java sınıfı, tüm Stok Kategorileri'nin ve bunlarla ilişkili konu adlarının 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. Üst araç çubuğunda hedef Android cihazınızı veya emülatörünüzü seçip çalıştır düğmesine basın.

5b27fc5b237e06b9.png

  1. Uygulama kullanıcı arayüzü aşağıdaki gibi görünür:

ff5b1a1c53231c54.png

  1. Uygulama, bir FCM kayıt jetonu oluşturur ve bunu günlüğe kaydeder. Ancak uygulama kullanıcı arayüzünde herhangi bir değişiklik olmayacak.
    1. FCM Kayıt Jetonu'nu kopyalayıp kaydedin. Bu jeton sonraki adımlarda kullanılacaktır.

927eb66bc909f36b.png

5. Test Mesajı Gönderme

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

Başlangıç sunucusu 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 olmalıdır:

da20711f6527dff6.png

IntelliJ IDEA'nın, gerekli bağımlılıkları çekme de dahil olmak üzere projenizi oluşturmasının birkaç dakika sürebileceğini unutmayın.

Sunucu başlangıç kodunu anlama

  • Sunucu başlangıç kodu, Gradle tabanlı bir Java projesidir.
  • build.gradle dosyasına firebase-admin SDK bağımlılığı zaten eklenmiş olmalı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ıfta aşağıdaki not yöntemleri bulunur:
      • initFirebaseSDK: firebase-admin SDK'sını başlatır.
      • sendMessageToFcmRegistrationToken: FCM kayıt jetonuna mesaj gönderme
      • sendMessageToFcmTopic: Bir FCM konu başlığına mesaj gönderme
      • sendMessageToFcmTopicCondition: Bir FCM konu koşuluna mesaj gönderme
    • FcmSubscriptionManager.java: Bu sınıf, konu aboneliklerinin sunucu tarafında yönetilmesine olanak tanıyan yöntemler içerir.
      • initFirebaseSDK: firebase-admin SDK'sını başlatır.
      • subscribeFcmRegistrationTokensToTopic: FCM tescil jetonlarını bir FCM konusuna abone edin.
      • unsubscribeFcmRegistrationTokensFromTopic: FCM kayıt jetonlarının FCM konusundan kaydını siler.

Sunucu kodunu ayarlama

  1. İlk olarak, firebase-admin SDK'nın FCM API'lerine yapılan çağrıları yetkilendirmesine olanak tanıyan bir Firebase hizmet hesabı oluşturmamız gerekiyor.
    1. Firebase Console'a 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. Şimdi Yeni özel anahtar oluştur düğmesini tıklayın. Anahtar dosyanızın otomatik olarak indirilmesi 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, 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 Run Build -> Build Project'i (Derlemeyi Çalıştır -> Projeyi Derle) seçin.

Test Mesajı Gönderme

  1. FcmSender.java bölümünde 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 ekleyin.
  2. main işlevinde yalnızca sendMessageToFcmRegistrationToken işlevinin yorumunu kaldırın ve kodu yürütmek için çalıştır'ı tıklayın.
    1. FCM Registration Token'ın message nesnesinin Token alanına nasıl ayarlandığını inceleyin.
    2. Ayrıca, FirebaseMessaging arayüzünün send API'sini nasıl kullandığımıza dikkat edin.

52e4a3ec3f816473.png

  1. Bu işlem, önceki adımda ayarladığınız uygulama örneğine bir mesaj gönderir.
  2. Uygulama örneği ön planda olduğunda mesaj içeriğinin kaydedildiğini görmeniz gerekir.

d3540ec1089f97dd.png

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

31203deca59c03fe.png

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

6. Konu aboneliğini / abonelikten çıkmayı uygulama

Bu adımda, Android uygulamasının Stok Kategorisi açma/kapatma düğmesinde konu aboneliği ve abonelikten çıkma işlemlerini uygulayacaksınız.

Bir uygulama kullanıcısı belirli bir stok kategorisinin anahtarını açtığında, konu aboneliği veya abonelikten çıkma çağrısı yapılır.

İnceleme kodu

  • Android uygulama kodundaki SubscriptionAdapter.java sınıfına gidin ve RecyclerViewViewHolder sınıfını bulun.

6c0614199e684f6.png

  • Sınıf oluşturucu, setOnCheckedChangeListener kullanarak abonelik açma/kapatma düğmesi için bir işleyici ayarlar.
  • Açma/kapatma düğmesine 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 Kategorisi ile bağlamak için RecyclerView Adapter'ın 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ı uygulayacaksınız. Kod şu şekilde 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 listesinden çıkma özelliğini uygulama

  1. Benzer şekilde, else koşulunda unsubscribeFromTopic API'ye yapılan çağrıyı uygulayacaksınız. Aşağıdakine benzer bir mesaj:
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 Olma ile Abonelikten Çıkma işlemlerini gerçekleştirmek için Stok Kategorisi seçeneklerini etkinleştirin. Şöyle bir şey görürsünüz:

Abone ol

Aboneliği iptal et

7. İlk konu mesajınızı gönderme

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

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

  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 belirtin.
    • /topics/<Topic Name> biçiminde bir dizedir. Ö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ı yerine Topic alanının ayarlanmasıdı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 aramayı ekleyin (sendMessageToFcmRegistrationToken işlevinde yapılan gönderme aramasıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
  1. Son olarak, main işlevini güncelleyin ve yalnızca sendMessageToFcmTopic işlevini çağırmayı etkinleştirin.

9a6aa08dd7c28898.png

İleti gönderme ve alındığını 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üğmesiyle yapılabilir. Örneğin:
    4668247408377712.png
  2. Artık FcmSender.java işlevinin main işlevini kullanarak konu mesajınızı gönderebilirsiniz.
  3. Daha önce olduğu gibi, uygulama örneğinde ileti alındığını gözlemleyebilirsiniz.
    1. Ön planda çalışan uygulama örneği
    c144721399f610fe.png
    1. Arka plandaki uygulama örneği
    44efc7dfd57e8e9a.png
  4. Bonus: Gönderdiğiniz konunun e-posta listesinden çıkmayı ve mesajı yeniden göndermeyi deneyin. İletinin uygulama örneğine teslim edilmediğini görürsünüz.

8. İlk konu koşulu mesajınızı gönderme

Konu koşulu özelliği, daha etkileyici bir kitle tanımı sağlamanıza olanak tanıyarak 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ı ele alalım. Örneğin, Waymo ile ilgili önemli bir olay yaşandığında bu durum ortaya çıkabilir.

Topics, aşağıdaki operatörleri kullanarak kombinasyonunuzu Boole ifadesi şeklinde belirtmenize 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 kullanılan parantezler. Örneğin, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) yalnızca Teknoloji'ye ve Otomotiv veya Enerji konularına abone olan uygulama örneklerini hedefler.

Bu işlevi kullanmak için gönderme isteklerini 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 içine 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 belirtin. Bu ayarı şu şekilde belirleyebilirsiniz: '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ı ayarlamanızdı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 aramayı ekleyin (sendMessageToFcmTopic işlevinde yapılan gönderme aramasıyla aynıdır).
FirebaseMessaging.getInstance().send(message);
  1. Son olarak, main işlevini güncelleyin ve yalnızca sendMessageToFcmTopicCondition işlevini çağırmayı etkinleştirin.

db9588d40d2a0da6.png

Mesajı gönderme ve alındığını doğrulama

  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 işlevinin main işlevini kullanarak konu mesajınızı gönderebilirsiniz.
  3. Eskisi gibi, uygulama örneğinde mesaj alındığını gözlemleyebilirsiniz.
    1. Ön planda çalışan uygulama örneği
    6f612ace15aa6515.png
    1. Arka plandaki uygulama örneği
    78044a56ac2359cb.png
  4. Bonus: Artık Teknoloji konusunun e-posta listesinden çıkabilir ve konu koşulu mesajını yeniden gönderebilirsiniz. Uygulama örneğinin mesajı almadığını gözlemlemeniz gerekir.

9. Özet

Şimdiye kadar öğrendiklerinizi kısaca özetleyelim.

  • Bir uygulama örneğinden konu aboneliği başlatma / abonelikten çıkma
  • Konuya mesaj gönderme ve abone olunan uygulama örneklerinde alındığını doğrulama.
  • Bir konuya mesaj gönderme koşulu ve koşulu karşılayan bir uygulama örneğinde alındığını doğrulama.

Sonraki bölümde, istemci tarafında çağrı başlatmaya gerek kalmadan uygulama örneklerini konulara nasıl abone olabileceğinizi / abonelikten çıkarabileceğinizi öğreneceksiniz.

c0dc20655d392690.gif

10. Konu aboneliklerini sunucu tarafından yönetme

Ş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 alanlarında konu aboneliklerini sunucu tarafından yönetmek isteyebilirsiniz. Örneğin, mevcut kullanıcı tabanınızın bir alt grubunu uygulama yayınlanmasını beklemeden yeni bir konuya abone etmek isteyebilirsiniz.

Bu bölümde, sunucu tarafında çağrı yaparak bir FCM kayıt jetonu grubunu bir konuya abone etmek ve abonelikten çıkarmak için Firebase Admin SDK'yı nasıl kullanacağınızı öğreneceksiniz.

FCM kayıt jetonlarının FCM konusuna sunucu tarafı aboneliğini uygulama

  1. Sunucu kodunda FcmSubscriptionManager.java sınıfına gidin. subscribeFcmRegistrationTokensToTopic adlı yöntemi bulun. subscribeToTopic API'ye yapılan çağrıyı burada uygulayacaksınız.

5d5709e7b3cbcb04.png

  1. Uygulama örneğini Energy konusuna abone edelim. Bunu yapmak için öncelikle aşağıdaki iki alanla ilgili verileri sağlayın:
    1. registrationTokens: Konu abonelikleri oluşturmak istediğiniz FCM kayıt jetonlarını temsil eden, virgülle ayrılmış bir dizeler listesi.
    2. topicName: Enerji konusunun konu adı, yani /topics/Energy.
  2. Sonraki birkaç satırda, aşağıdaki gibi bir çağrı uygulayın:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Bazı üst düzey sonuç istatistikleri için TopicManagementResponse bölümünü inceleyebilirsiniz. Örneğin, getSuccessCount kullanarak başarıyla oluşturulan konu aboneliklerinin sayısını yazdırma.
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ştirin.

Abonelik oluşturma ve konu mesajı gönderme

  1. Bu noktada, konu aboneliğini oluşturmaya ve konuya mesaj göndermeye hazırsınız.
  2. FcmSubscriptionManager.java sınıfının main işlevini yürütün. Bu işlem, konu aboneliği oluşturur.
  3. Şimdi de mesajı gönderecek kodu ayarlayın. Öncekiyle benzer şekilde,
    1. FcmSender.java bölümünde sendMessageToFcmTopic işlevini bulun.
    2. topicName konusunu Enerji olarak ayarlayın. /topics/Energy.
    3. Message nesnesi oluşturun ve setTopic kullanarak konuyu 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şlem, mesajı uygulama örneğinize gönderir. Mesajı uygulamanızda aşağıdaki şekilde gözlemleyebilirsiniz.
    1. Ön planda çalışan uygulama örneği
    40ab6cf71e0e4116.png
    1. Arka plandaki uygulama örneği
    8fba81037198209e.png

FCM kayıt jetonlarının FCM konusundan sunucu tarafında abonelikten çıkarılmasını uygulama

  1. Sunucu tarafında konu e-posta listesinden çıkma işlemleri için bu unsubscribeFromTopic API'yi kullanın. İlgili kodu FcmSubscriptionManager.java sınıfının unsubscribeFcmRegistrationTokensFromTopic işlevine eklersiniz.

8d9e8ea9d34016bd.png

  1. Sunucu tarafı e-posta listesinden çıkma kodunu uygulama ve konu mesajı göndererek etkisini doğrulama alıştırması size bırakılmıştır.

11. Tebrikler

Tebrikler, FCM konularını kullanarak uygulama örneklerinizin alt gruplarına çoklu yayın iletileri göndermeyi başardınız. Bu sayede, kullanıcılarınıza alakalı içeriklerle zamanında ulaşma olanağınız kolaylaşır.

947def3eb33b1e4a.gif

Sırada ne var?

Codelab'inizi tamamladığınıza göre aşağıdaki kılavuzları kullanarak diğer platformlarla ilgili konuları da deneyebilirsiniz:

Reference Docs