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 çoklu yayın push mesajları gönderebilmeniz için çok platformlu uygulamanızı nasıl izleyeceğinizi öğreneceksiniz.

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

Konulara Genel Bakış

Konular, 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 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çerikler 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 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 çok noktalı push mesajları gönderme
  • Konu koşullarını kullanarak bir konu kombinasyonuna nasıl ileti gönderilir?
  • Konu aboneliklerini sunucu tarafında yönetme ve toplu abonelik ile abonelikten çıkma işlemleri yapma

Ne oluşturacaksınız?

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

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 dizininde yer alır. 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 istiyorsanız 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 "Yoksay"ı veya sağ üstteki "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 görüntü görürsünüz. (Proje görünümündeyken 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 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 basit 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 arama işleyicisi zaten eklenmiş.
    • Bu işleyici, StockNewsMessagingService.java, çeşitli Firebase Cloud Messaging ile ilgili 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
    • 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ı makaleyi inceleyin.
    • 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ı kaydeder.
      • Arka plan ve ön plan mesajı teslimi ile işleme 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 içinde StockNewsApplication adlı bir Android Application sınıfı da sağlanır. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Bu sınıf, uygulama başlatıldığında oluşturulan ilk sınıf olacaktır.
    • 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 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 görünmelidir:

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: FCM konusuna 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 konu başlığından 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, sol gezinme çubuğunda Project Overview'ın yanındaki dişli simgesini tıklayın ve Project settings'i (Proje ayarları) 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ı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, 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 (Derleme Çalıştır -> Proje 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ı gözlemleyin.
    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örürsünüz.

d3540ec1089f97dd.png

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

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

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 görürsünüz:
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. Bu, aşağıdaki gibi görünür:

Abone ol

Abonelikten çık

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şlevinin çağrılmasını etkinleştirin.

9a6aa08dd7c28898.png

İleti gönderme ve alındı belgesini 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. Uygulama örneği ön planda
    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.

Konular, 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 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 belirtin. Ş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ı 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şlevinin çağrılmasını 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. Daha önce olduğu gibi, uygulama örneğinde mesaj alındığını gözlemleyebilirsiniz.
    1. Uygulama örneği ön planda
    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 hızlıca özetleyelim.

  • Bir uygulama örneğinden konu aboneliği başlatma / abonelikten çıkma
  • Konuya ileti gönderme ve abone olunan uygulama örneklerinde alındığını doğrulama.
  • Bir konuya ileti 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

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

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ılar 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 simgesini 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 değerini Energy konusu olarak ayarlayın. Örneğin: /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. Uygulama örneği ön planda
    40ab6cf71e0e4116.png
    1. Arka plandaki uygulama örneği
    8fba81037198209e.png

FCM Kayıt Jetonlarının FCM konu başlığından sunucu tarafında abonelikten çıkma işlemini 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şmanı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