FCM विषयों का इस्तेमाल करके, आपका पहला मल्टीकास्ट पुश मैसेज

1. शुरुआती जानकारी

लक्ष्य

इस कोडलैब में आप अपने मल्टी-प्लैटफ़ॉर्म ऐप्लिकेशन को इंस्ट्रुमेंट करने का तरीका जानेंगे, ताकि आप FCM विषयों का इस्तेमाल करके अपने ऐप्लिकेशन इंस्टेंस के अलग-अलग सबग्रुप में पुश मैसेज को मल्टीकास्ट कर सकें.

यह काम पूरा हो जाने के बाद, आप इन सबग्रुप को मैनेज करने के लिए FCM इन्फ़्रास्ट्रक्चर का इस्तेमाल कर पाएंगे. साथ ही, सबग्रुप पर मल्टीकास्ट पुश मैसेज भी इस्तेमाल कर पाएंगे.

विषय की खास जानकारी

विषय, FCM इंफ़्रास्ट्रक्चर की मदद से, मैसेज के ज़रिए आपके ऐप्लिकेशन इंस्टेंस के सबग्रुप तक पहुंचने का तरीका है.

FCM संदेश भेजने और साथ ही इन विषयों के लिए सदस्यताएं बनाए रखने के लिए API प्रदान करता है. किसी ऐप्लिकेशन इंस्टेंस को किसी विषय से जोड़ने और अलग करने को 'सदस्यता लें' और 'सदस्यता छोड़ें' कहा जाता है

विषयों का इस्तेमाल, सार्वजनिक तौर पर उपलब्ध कॉन्टेंट के लिए किया जाना चाहिए. उदाहरण के लिए, मौसम के अपडेट के बारे में मैसेज. अगर आपको उपयोगकर्ता के संवेदनशील मैसेज भेजने हैं, तो एक से ज़्यादा डिवाइसों पर मैसेज मल्टीकास्ट करने के लिए, Firebase एडमिन SDK का इस्तेमाल करें.

टॉपिक पर आधारित मल्टीकास्टिंग की सुविधा को थ्रूपुट के लिए ऑप्टिमाइज़ किया गया है.

आपको इनके बारे में जानकारी मिलेगी

  • उपयोगकर्ताओं को मोबाइल ऐप्लिकेशन से विषयों की सदस्यता लेने (और सदस्यता छोड़ने) का तरीका.
  • विषयों का इस्तेमाल करके, मल्टीकास्ट पुश मैसेज भेजने का तरीका.
  • विषय की शर्तों का इस्तेमाल करके, मिलते-जुलते विषयों पर मैसेज भेजने का तरीका.
  • सर्वर साइड पर विषय की सदस्यताओं को मैनेज करने, एक साथ कई सदस्यताएं लेने और सदस्यताएं छोड़ने का तरीका जानें.

आपको क्या बनाना होगा

  • ऐसा Android ऐप्लिकेशन जो विषयों की सदस्यता लेता है/सदस्यता छोड़ता है. साथ ही, विषयों पर भेजे गए मैसेज भी मिलते हैं.
  • Firebase एडमिन SDK टूल का इस्तेमाल करके सर्वर साइड इंटिग्रेशन. इसका इस्तेमाल FCM API (एपीआई) के ज़रिए विषय से जुड़े मैसेज भेजने के लिए किया जाएगा.

आपको इन चीज़ों की ज़रूरत होगी

  • आपकी पसंद का ब्राउज़र, जैसे कि Chrome.
  • Java ऐप्लिकेशन डेवलप करने के लिए, IntellaJ IDEA IDE.
    • पक्का करें कि इंस्टॉल करते समय, Gradle के लिए सहायता से ऑप्ट-इन किया गया हो.
  • Android Studio IDE. Android ऐप्लिकेशन डेवलप करने के लिए.
  • Android ऐप्लिकेशन चलाने वाला डिवाइस. इनमें से कोई एक:
    • Android एम्युलेटर. (इसके लिए, Android Studio में सेटअप करना ज़रूरी है).
    • एक ऐसा Android डिवाइस जो आपके कंप्यूटर से कनेक्ट हो और डेवलपर मोड पर सेट हो.
  • Firebase प्रोजेक्ट बनाने और उसे मैनेज करने के लिए Google खाता.

2. सेट अप किया जा रहा है

कोड पाएं

कमांड लाइन से GitHub रिपॉज़िटरी का क्लोन बनाएं:

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

इस सैंपल कोड को fcm-codelab डायरेक्ट्री में क्लोन किया जाएगा.

cd fcm-codelab

इस कोडलैब के लिए स्टार्टर ऐप्लिकेशन, fcm-topics-codelab ब्रांच की messaging डायरेक्ट्री में है. स्टार्टर कोड तक पहुंचने के लिए यह तरीका अपनाएं. इसमें दो डायरेक्ट्री StockNewsApp और StockNewsServer हैं. पहले वाले हिस्से में स्टार्टर Android ऐप्लिकेशन होता है और बाद वाले ऐप्लिकेशन में स्टार्टर सर्वर साइड कोड होता है.

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

इस कोडलैब का पूरा वर्शन, messaging/fcm-topics-codelab/completed डायरेक्ट्री में मौजूद है.

Firebase प्रोजेक्ट बनाना

  1. Firebase कंसोल में, प्रोजेक्ट जोड़ें पर क्लिक करें. इसके बाद, Firebase प्रोजेक्ट को StockNews पर क्लिक करें और 'जारी रखें' पर क्लिक करें. ध्यान दें: अपने Firebase प्रोजेक्ट का प्रोजेक्ट आईडी याद रखें (या अपना पसंदीदा प्रोजेक्ट आईडी सेट करने के लिए बदलाव करें आइकॉन पर क्लिक करें).

FC08f9a7808e4553.png

  1. हालांकि, Google Analytics को अभी चालू नहीं किया जा सकता. इस कोडलैब के लिए, आपको इसकी ज़रूरत नहीं है. जारी रखें पर क्लिक करें.
  2. प्रोजेक्ट बनाएं पर क्लिक करें.

बधाई हो! आपने अभी-अभी अपना Firebase प्रोजेक्ट बनाया है. अब कंसोल में जाने के लिए, प्रोजेक्ट के नाम पर क्लिक किया जा सकता है.

3. प्लैटफ़ॉर्म के हिसाब से, Firebase ऐप्लिकेशन का कॉन्फ़िगरेशन

Firebase सहायता चालू करने के लिए कोड में ज़रूरी ज़्यादातर बदलाव, उस प्रोजेक्ट में पहले ही जांच लिए जा चुके हैं जिस पर काम किया जा रहा है. हालांकि, मोबाइल प्लैटफ़ॉर्म के लिए सहायता जोड़ने के लिए आपको:

  • Firebase प्रोजेक्ट पर, अपनी पसंद का प्लैटफ़ॉर्म रजिस्टर करें
  • प्लैटफ़ॉर्म के हिसाब से कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें और उसे कोड में जोड़ें.

इस कोडलैब के लिए, हम एक Android Firebase ऐप्लिकेशन जोड़ने जा रहे हैं.

84e0b3199bef6d8a.pngAndroid कॉन्फ़िगर करें

  1. Firebase कंसोल में जाकर, सेटिंग कॉग में, बाईं ओर मौजूद नेविगेशन बार में सबसे ऊपर मौजूद प्रोजेक्ट सेटिंग चुनें. इसके बाद, सामान्य पेज पर जाकर, आपके ऐप्लिकेशन में जाकर, Android आइकॉन पर क्लिक करें.

आपको यह डायलॉग बॉक्स दिखेगा : 8254fc299e82f528.png

  1. Android पैकेज का नाम, एक अहम वैल्यू है. इसे com.ticker.stocknews पर सेट करें.
    1. पैकेज का यहां वही नाम होना चाहिए जो आपके स्टार्टर StockNewsApp कोड के AndroidManifest.xml में दिया गया है. यदि आप उसे ढूँढना चाहते हैं या बदलना चाहते हैं, तो इन चरणों का पालन करें:
      1. StockNewsApp डायरेक्ट्री में, app/src/main/AndroidManifest.xml फ़ाइल खोलें.
      2. manifest एलिमेंट में, package एट्रिब्यूट की स्ट्रिंग की वैल्यू ढूंढें. यह मान Android पैकेज का नाम है.
  1. Firebase डायलॉग में, कॉपी किए गए पैकेज का नाम Android पैकेज का नाम फ़ील्ड में चिपकाएं.
  2. इस कोडलैब के लिए, आपको डीबग साइनिंग सर्टिफ़िकेट SHA-1 की ज़रूरत नहीं है, क्योंकि यह ऐप्लिकेशन रिलीज़ नहीं किया जाएगा. इसे खाली छोड़ दें.
  3. ऐप्लिकेशन रजिस्टर करें पर क्लिक करें.
  4. Firebase कंसोल में, नीचे दिए गए निर्देशों का पालन करके कॉन्फ़िगरेशन फ़ाइल google-services.json डाउनलोड करें.
  5. आप सेटअप के बाकी चरणों को छोड़ सकते हैं, क्योंकि बाकी सब कुछ पहले से ही स्टार्टर ऐप्लिकेशन कोड में कॉन्फ़िगर किया जा चुका है. आपको अपना ऐप्लिकेशन Firebase कंसोल के मुख्य पेज पर सूची में मिल जाएगा.
  6. google-services.json फ़ाइल (आपने अभी-अभी डाउनलोड की है) को messaging/fcm-topics-codelab/starter/StockNewsApp/app डायरेक्ट्री में कॉपी करें.

4. अपना ऐप्लिकेशन बनाएं और चलाएं

आप अपने ऐप्लिकेशन पर काम शुरू करने के लिए तैयार हैं! सबसे पहले, ऐप्लिकेशन बनाएं और चलाएं.

स्टार्टर ऐप्लिकेशन को इंपोर्ट करें

Android Studio शुरू करें. इसके बाद, स्टार्टर कोड डायरेक्ट्री से messaging/fcm-topics-codelab/starter/StockNewsApp को इंपोर्ट करें.

प्रोजेक्ट लोड होने के बाद, आपको एक सूचना भी दिखाई दे सकती है कि Git आपके सभी स्थानीय बदलावों को ट्रैक नहीं कर रहा है, इसलिए आप "ध्यान न दें" पर क्लिक कर सकते हैं या "X" ऊपर दाईं ओर. (आपको Git रेपो में कोई भी बदलाव वापस नहीं देना होगा.)

अगर आप Android व्यू में हैं, तो प्रोजेक्ट विंडो के ऊपर बाएं कोने में आपको नीचे दी गई इमेज के जैसा कुछ दिखेगा. अगर आप प्रोजेक्ट व्यू में हैं, तो आपको वही चीज़ देखने के लिए प्रोजेक्ट को बड़ा करना होगा

b574ea0089ee87c6.png

कृपया ध्यान दें कि Android Studio को बैकग्राउंड में पहली बार प्रोजेक्ट को कंपाइल करने में कुछ सेकंड लग सकते हैं. इस दौरान आपको Android Studio में सबसे नीचे स्टेटस बार में एक स्पिनर दिखेगा:

4bc64eb3b99eb0ae.png

हमारा सुझाव है कि कोड में बदलाव करने से पहले, इस प्रोसेस के खत्म होने तक इंतज़ार करें. इससे Android Studio को सभी ज़रूरी कॉम्पोनेंट इस्तेमाल करने में मदद मिलती है.

इसके अलावा, अगर आपको यह सूचना मिलती है कि "भाषा में बदलाव लागू करने के लिए फिर से लोड करें?" या इसी तरह का कुछ पाने के लिए, "हां" चुनें.

एमुलेटर का सेटअप

अगर आपको Android एम्युलेटर सेट अप करने में मदद चाहिए, तो अपना ऐप्लिकेशन चलाएं लेख पढ़ें.

Android ऐप्लिकेशन स्टार्टर कोड को समझना

  • स्टार्टर कोड एक कम सुविधाओं वाला Android ऐप्लिकेशन है. इसमें कम से कम फ़ंक्शन और यूज़र इंटरफ़ेस (यूआई) है.
  • Firebase-मैसेजिंग SDK टूल की डिपेंडेंसी पहले से ही app/build.gradle फ़ाइल में जोड़ी गई है.

f04ff8f48d186dff.png

  • AndroidManifest.xml में, MESSAGING_EVENT कॉलबैक हैंडलर पहले ही जोड़ा जा चुका है.
    • StockNewsMessagingService.java, यह हैंडलर ऐप्लिकेशन FirebaseMessagingService क्लास को बढ़ाता है. इससे Firebase क्लाउड से मैसेज करने से जुड़ी कई तरह की सुविधाएं मिलती हैं. ज़्यादा जानने के लिए, FirebaseMessagingService दस्तावेज़ देखें. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • FCM रजिस्ट्रेशन टोकन बनाए जाने या रीफ़्रेश किए जाने पर, onNewToken फ़ंक्शन कॉल किया जाता है. ज़्यादा जानकारी के लिए, टोकन जनरेशन को मॉनिटर करना लेख पढ़ें.
    • जब कोई मैसेज मिलता है और ऐप्लिकेशन फ़ोरग्राउंड में होता है, तो onMessageReceived फ़ंक्शन को कॉल किया जाता है. फ़िलहाल, यह सिर्फ़ मिले मैसेज को लॉग करता है.
      • बैकग्राउंड और फ़ोरग्राउंड मैसेज की डिलीवरी और उन्हें मैनेज करने के बीच के फ़र्क़ के बारे में ज़्यादा जानने के लिए, Android ऐप्लिकेशन में मैसेज पाना लेख पढ़ें.
  • साथ ही, AndroidManifest.xml में, StockNewsApplication नाम की एक Android Application क्लास भी दी गई है. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • ऐप्लिकेशन के शुरू होने पर, सबसे पहले इस क्लास को इंस्टैंशिएट किया जाएगा.
    • StockNewsApplication क्लास के onCreate फ़ंक्शन में, FCM रजिस्ट्रेशन टोकन बनाने का कॉल जोड़ा गया. वह एक मान्य FCM रजिस्ट्रेशन टोकन जनरेट करेगा और उसे लॉग करेगा.
  • MainActivity.java, RecyclerView को जोड़ता है, जो स्टॉक कैटगरी के विकल्प दिखाता है.
  • SubscriptionAdapter.java, RecyclerView.Adapter को लागू करता है, जो स्टॉक कैटगरी चुनने वाली स्क्रीन दिखाता है.
    • हर स्टॉक कैटगरी का एक नाम होता है और उसके बगल में सदस्यता का टॉगल होता है.
    • टॉगल बदलने से, FCM विषय की सदस्यता / सदस्यता छोड़ने वाला कॉल शुरू हो जाएगा.
    • आने वाले सेक्शन में, इन कॉल को शामिल किया जाएगा.
  • model/StockCategories.java क्लास में, स्टॉक की सभी कैटगरी और उनसे जुड़े विषयों के नामों की सूची होती है.

b32663ec4e865a18.png

स्टार्टर ऐप्लिकेशन चलाएं

  1. अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें या एम्युलेटर शुरू करें.
  2. सबसे ऊपर मौजूद टूलबार में, टारगेट किया गया Android डिवाइस या एम्युलेटर चुनें. इसके बाद, 'चलाएं' बटन दबाएं.

5b27fc5b237e06b9.png

  1. ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई), इस तरह दिखेगा:

ff5b1a1c53231c54.png

  1. ऐप्लिकेशन एक FCM रजिस्ट्रेशन टोकन बनाएगा और उसे लॉग करेगा. हालांकि, ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में कुछ भी नहीं बदलेगा.
    1. FCM रजिस्ट्रेशन टोकन को कॉपी करें और सेव करें, क्योंकि अगले चरणों में इसका इस्तेमाल किया जाएगा.

927eb66bc909f36b.png

5. एक परीक्षण संदेश भेजें

अब आप उस ऐप्लिकेशन इंस्टेंस पर टेस्ट मैसेज भेजने के लिए तैयार हैं जिसे आपने पिछले चरण में सेट अप किया था.

स्टार्टर सर्वर कोड इंपोर्ट करें

IntelliJ IDEA शुरू करें और messaging/fcm-topics-codelab/starter/StockNewsServer प्रोजेक्ट खोलें.

आपके बाएं नेविगेशन बार में मौजूद प्रोजेक्ट व्यू कुछ ऐसा दिखना चाहिए:

da20711f6527dff6.png

ध्यान दें, IntellIj IDEA को आपका प्रोजेक्ट बनाने में कुछ मिनट लग सकते हैं. इसमें, ज़रूरी डिपेंडेंसी हासिल करने में भी कुछ मिनट लग सकते हैं.

सर्वर स्टार्टर कोड को समझना

  • सर्वर स्टार्टर कोड, Gradle पर आधारित Java प्रोजेक्ट है.
  • build.gradle फ़ाइल में पहले से ही, इसमें जोड़े गए Firebase-एडमिन SDK पर डिपेंडेंसी है. यह SDK टूल, FCM मैसेज भेजने की अलग-अलग सुविधाओं का ऐक्सेस देता है.

650fc733298588f8.png

  • अंत में, दो क्लास हैं, यानी:
    • FcmSender.java: इस क्लास में नोट करने के ये तरीके शामिल हैं:
      • initFirebaseSDK: Firebase एडमिन SDK टूल को शुरू करता है.
      • sendMessageToFcmRegistrationToken: FCM रजिस्ट्रेशन टोकन को मैसेज भेजें.
      • sendMessageToFcmTopic: FCM विषय के बारे में मैसेज भेजें.
      • sendMessageToFcmTopicCondition: FCM विषय की किसी शर्त पर मैसेज भेजें.
    • FcmSubscriptionManager.java: इस क्लास में ऐसे तरीके शामिल हैं जो सर्वर साइड से विषय की सदस्यताओं को मैनेज करने की अनुमति देते हैं.
      • initFirebaseSDK: Firebase एडमिन SDK टूल को शुरू करता है.
      • subscribeFcmRegistrationTokensToTopic: FCM रजिस्ट्रेशन टोकन की सदस्यता FCM से जुड़े विषय के तौर पर ली जा सकती है.
      • unsubscribeFcmRegistrationTokensFromTopic: किसी FCM विषय से जुड़े FCM रजिस्ट्रेशन टोकन की सदस्यता छोड़ें.

सर्वर कोड सेट अप करना

  1. सबसे पहले, हमें एक Firebase सेवा खाता सेट अप करना होगा, जो Firebase-एडमिन SDK को FCM API (एपीआई) में कॉल की अनुमति देने की अनुमति देता है.
    1. Firebase कंसोल पर जाएं, बाईं ओर दिए गए नेविगेशन बार में प्रोजेक्ट की खास जानकारी के बगल में मौजूद गियर आइकॉन पर क्लिक करें और प्रोजेक्ट सेटिंग चुनें. 8c2108d4d7c915e9.png
    2. सेटिंग पेज में, सेवा खाते चुनें और सेवा खाता बनाएं पर क्लिक करें. 84b128cc5dac0a85.png
    3. अब नई निजी कुंजी जनरेट करें बटन पर क्लिक करें और आपकी मुख्य फ़ाइल अपने-आप डाउनलोड होने लगेगी.
    4. कुंजी फ़ाइल का नाम बदलकर service-account.json करें और उसे messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources फ़ोल्डर में कॉपी करें.
    5. FcmSender.java और FcmSubscriptionManager.java, दोनों नीचे दिए गए कोड का इस्तेमाल करके, क्लासपाथ से service-account.json फ़ाइल लोड करते हैं. 8dffbee658e0bdd.png
  2. अब सर्वर कोड तैयार है. बिल्ड -> चलाएं सबसे ऊपर मौजूद मेन्यू बार से प्रोजेक्ट बनाएं.

टेस्ट मैसेज भेजना

  1. FcmSender.java में, sendMessageToFcmRegistrationToken फ़ंक्शन का पता लगाएं और स्टार्टर ऐप्लिकेशन चलाएं सेक्शन से कॉपी किए गए FCM रजिस्ट्रेशन टोकन को registrationToken फ़ील्ड में डालें.
  2. main फ़ंक्शन में, सिर्फ़ sendMessageToFcmRegistrationToken फ़ंक्शन की टिप्पणी हटाएं और कोड चलाने के लिए 'चलाएं' पर क्लिक करें.
    1. देखें कि message ऑब्जेक्ट के Token फ़ील्ड में FCM रजिस्ट्रेशन टोकन कैसे सेट किया गया है.
    2. इसके अलावा, ध्यान दें कि हमने FirebaseMessaging इंटरफ़ेस के send API का इस्तेमाल कैसे किया है.

52e4a3ec3f816473.png

  1. इससे उस ऐप्लिकेशन इंस्टेंस पर मैसेज भेजा जाएगा जिसे आपने पिछले चरण में सेट अप किया था.
  2. जब ऐप्लिकेशन इंस्टेंस फ़ोरग्राउंड में होता है, तब आपको लॉग किया गया मैसेज का कॉन्टेंट दिखना चाहिए.

d3540ec1089f97dd.png

  1. ऐप्लिकेशन इंस्टेंस के बैकग्राउंड में होने पर, आपको सूचनाओं की ट्रे में मैसेज दिखेगा.

31203deca59c03fe.png

बहुत बढ़िया, आपने किसी ऐप्लिकेशन इंस्टेंस पर मैसेज भेजने के लिए, Firebase एडमिन SDK का इस्तेमाल किया है. अपने सर्वर में Firebase एडमिन SDK का इस्तेमाल करने के बारे में ज़्यादा पढ़ें.

6. विषय सदस्यता लागू करना / सदस्यता छोड़ना

इस चरण में, Android ऐप्लिकेशन के स्टॉक कैटगरी टॉगल पर, विषय की सदस्यता और सदस्यता छोड़ने की कार्रवाइयां लागू की जाएंगी.

जब ऐप्लिकेशन का कोई उपयोगकर्ता किसी स्टॉक कैटगरी के लिए स्विच को टॉगल करता है, तो उस विषय से जुड़ी सदस्यता या सदस्यता छोड़ने का कॉल किया जाता है.

समीक्षा कोड

  • Android ऐप्लिकेशन कोड में, SubscriptionAdapter.java क्लास पर जाएं और RecyclerViewViewHolder क्लास का पता लगाएं.

6c0614199e684f6.png

  • क्लास कंस्ट्रक्टर, setOnCheckedChangeListener का इस्तेमाल करके सदस्यता टॉगल के लिए लिसनर सेट करता है.
  • स्विच टॉगल के आधार पर, 'सदस्यता लें' और 'सदस्यता छोड़ें' कार्रवाइयां subscribeToStockCategory और unsubscribeFromStockCategory तरीकों से की जाती हैं.
  • ViewHolder को सही स्टॉक कैटगरी से बाइंड करने के लिए, setData तरीके को RecyclerView अडैप्टर के onBindViewHolder से कॉल किया जाता है.

विषय की सदस्यता लागू करना

  1. subscribeToStockCategory तरीके में, FirebaseMessaging ऑब्जेक्ट के subscribeToTopic एपीआई को कॉल लागू किया जाएगा. कोड कुछ ऐसा दिख सकता है:
   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();
          });
    }

विषय की सदस्यता छोड़ने की सुविधा लागू करना

  1. इसी तरह, 'अन्य शर्त' में, आपको कॉल को unsubscribeFromTopic एपीआई पर लागू करना होगा. इसके लिए:
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();
          });
    }

चलिए, इसे आज़माते हैं

  1. ऐप्लिकेशन चलाएं और 'सदस्यता लें' और 'सदस्यता छोड़ें' कार्रवाइयों को लागू करने के लिए, स्टॉक कैटगरी के विकल्पों को टॉगल करें. यह कुछ ऐसा दिखेगा:

सदस्यता लें

सदस्यता छोड़ें

7. आपका पहला विषय संदेश भेजा जा रहा है

इस चरण में, FCM विषय के मैसेज भेजने के लिए आपको सर्वर साइड कोड लागू करना होगा.

विषय के मैसेज भेजने के लिए, सर्वर साइड इंटिग्रेशन लागू करें

  1. सर्वर कोड में, FcmSender.java पर जाएं और sendMessageToFcmTopic नाम का तरीका ढूंढें.

56381dd1b40cde9c.png

  1. पहली पंक्ति में, वह FCM विषय दें जिस पर आपको मैसेज भेजना है.
    • यह इस फ़ॉर्म की स्ट्रिंग है: /topics/<Topic Name>. उदाहरण के लिए, /topics/Technology.
  2. अगली लाइनों में, एक नया message ऑब्जेक्ट बनाएं (जो sendMessageToFcmRegistrationToken फ़ंक्शन में तय किए गए ऑब्जेक्ट से मिलता-जुलता है).
    • सिर्फ़ message ऑब्जेक्ट का Token फ़ील्ड सेट करने के बजाय, आपको Topic फ़ील्ड को सेट करना होगा.
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. अब मैसेज भेजने के लिए, कॉल को FirebaseMessaging इंस्टेंस में जोड़ें (यह sendMessageToFcmRegistrationToken फ़ंक्शन में किए गए सेंड कॉल के जैसा ही है).
FirebaseMessaging.getInstance().send(message);
  1. आखिर में, main फ़ंक्शन को अपडेट करें और कॉल को सिर्फ़ sendMessageToFcmTopic फ़ंक्शन के लिए चालू करें.

9a6aa08dd7c28898.png

मैसेज भेजना और रसीद की पुष्टि करना

  1. विषय के बारे में मैसेज भेजने से पहले, यह पक्का करें कि आपके ऐप्लिकेशन इंस्टेंस ने उस विषय की सदस्यता ली हो जिस पर आपको मैसेज भेजना है.
    1. संबंधित टॉगल को फ़्लिप करके ऐसा किया जा सकता है. उदाहरण के लिए:
    4668247408377712.png
  2. अब आप FcmSender.java के main फ़ंक्शन को चलाकर अपने विषय का मैसेज भेज सकते हैं.
  3. पहले की तरह ही, आपको ऐप्लिकेशन इंस्टेंस पर मैसेज की रसीद दिखनी चाहिए.
    1. फ़ोरग्राउंड में ऐप्लिकेशन इंस्टेंस
    c144721399f610fe.png
    1. बैकग्राउंड में ऐप्लिकेशन इंस्टेंस
    44efc7dfd57e8e9a.png
  4. बोनस: आपने जिस विषय पर ईमेल भेजा था उसकी सदस्यता छोड़ें और मैसेज को फिर से भेजें. आपको दिखेगा कि ऐप्लिकेशन इंस्टेंस पर मैसेज नहीं पहुंच रहा है.

8. विषय से जुड़ी शर्त का पहला मैसेज भेजा जा रहा है

विषय की स्थिति की सुविधा की मदद से, अलग-अलग विषयों के कॉम्बिनेशन पर मैसेज भेजे जा सकते हैं. इससे आपको ज़्यादा सटीक ऑडियंस डेफ़िनिशन मिल सकती है.

उदाहरण के लिए, हमारे StockNews ऐप्लिकेशन में, ऐप्लिकेशन के उन इंस्टेंस के ग्रुप को मैसेज भेजने की संभावना होती है जिनके पास टेक्नोलॉजी या वाहन संबंधित विषयों की सदस्यता है. उदाहरण के लिए, ऐसा तब हो सकता है, जब Waymo से जुड़ा कोई अहम इवेंट हो.

Topics की मदद से, नीचे दिए गए ऑपरेटर का इस्तेमाल करके आपके कॉम्बिनेशन को बूलियन एक्सप्रेशन के तौर पर दिखाया जा सकता है

  • && : लॉजिकल AND. उदाहरण के लिए, 'Technology' in topics && 'Automotive' in topics - सिर्फ़ उन ऐप्लिकेशन इंस्टेंस को टारगेट करता है जो टेक्नोलॉजी और वाहन संबंधित विषयों, दोनों की सदस्यता लेते हैं.
  • : लॉजिकल OR. उदाहरण के लिए, 'Technology' in topics || 'Automotive' in topics - यह उन ऐप्लिकेशन इंस्टेंस को टारगेट करता है जो टेक्नोलॉजी या वाहन संबंधित विषयों की सदस्यता लेते हैं.
  • () : ग्रुपिंग के लिए ब्रैकेट. उदाहरण के लिए, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - सिर्फ़ उन ऐप्लिकेशन इंस्टेंस को टारगेट करता है जो टेक्नोलॉजी या वाहन संबंधित या ऊर्जा विषयों की सदस्यता लेते हैं.

इस सुविधा का इस्तेमाल करने के लिए, ईमेल भेजने के अनुरोध बनाने के तरीके के बारे में ज़्यादा जानें.

विषय से जुड़ी शर्त के मैसेज भेजने के लिए, सर्वर साइड इंटिग्रेशन लागू करना

  1. सर्वर कोड पर वापस जाएं और FcmSender.java पर जाएं और sendMessageToFcmTopicCondition नाम का तरीका ढूंढें.

3719a86c274522cf.png

  1. पहली लाइन में, topicCondition वैरिएबल के लिए, उस विषय स्थिति की जानकारी दें जिस पर आपको मैसेज भेजना है. इसे इस पर सेट किया जा सकता है: 'Technology' in topics && 'Automotive' in topics.
  2. अगली लाइनों में, एक नया message ऑब्जेक्ट बनाएं (जो sendMessageToFcmTopic फ़ंक्शन में तय किए गए ऑब्जेक्ट से मिलता-जुलता हो).
    1. यह अंतर, ऑब्जेक्ट के Topic फ़ील्ड को सेट करने के बजाय, Condition फ़ील्ड को सेट करने के लिए होगा.
    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. अब मैसेज भेजने के लिए, कॉल को FirebaseMessaging इंस्टेंस में जोड़ें (यह sendMessageToFcmTopic फ़ंक्शन में किए गए सेंड कॉल के जैसा ही है).
FirebaseMessaging.getInstance().send(message);
  1. आखिर में, main फ़ंक्शन को अपडेट करें और कॉल को सिर्फ़ sendMessageToFcmTopicCondition फ़ंक्शन के लिए चालू करें.

db9588d40d2a0da6.png

मैसेज भेजना और रसीद की पुष्टि करना

  1. विषय के बारे में मैसेज भेजने से पहले, यह पक्का करें कि आपका ऐप्लिकेशन इंस्टेंस, बताई गई विषय की शर्तें पूरी करता हो. इसके लिए, ऐप्लिकेशन इंस्टेंस की सदस्यता टेक्नोलॉजी और वाहन संबंधित, दोनों विषयों के लिए लें.
  2. अब आप FcmSender.java के main फ़ंक्शन को चलाकर अपने विषय का मैसेज भेज सकते हैं.
  3. पहले की तरह, आपको ऐप्लिकेशन इंस्टेंस पर मैसेज की रसीद दिख जाएगी.
    1. फ़ोरग्राउंड में ऐप्लिकेशन इंस्टेंस
    6f612ace15aa6515.png
    1. बैकग्राउंड में ऐप्लिकेशन इंस्टेंस
    78044a56ac2359cb.png
  4. बोनस: अब टेक्नोलॉजी से जुड़े विषय की सदस्यता छोड़ी जा सकती है और विषय की स्थिति से जुड़े मैसेज को फिर से भेजा जा सकता है. ध्यान रखें कि ऐप्लिकेशन इंस्टेंस को मैसेज नहीं मिला.

9. रीकैप

चलिए, फटाफट आपको याद करते हैं कि आपने अब तक क्या सीखा है.

  • किसी ऐप्लिकेशन इंस्टेंस से, विषय की सदस्यता लेने या सदस्यता छोड़ने का तरीका.
  • विषय के बारे में मैसेज भेजना और जिन ऐप्लिकेशन की सदस्यता ली गई है उन पर रसीद की पुष्टि की जा रही है.
  • किसी विषय से जुड़ी शर्त के लिए मैसेज भेजना और शर्त को पूरा करने वाले ऐप्लिकेशन इंस्टेंस पर रसीद की पुष्टि करना.

अगले सेक्शन में, आपको क्लाइंट-साइड से कॉल इंस्टैंशिएट किए बिना, विषयों के लिए ऐप्लिकेशन इंस्टेंस की सदस्यता लेने या छोड़ने का तरीका बताया जाएगा.

c0dc20655d392690.gif

10. सर्वर साइड से विषय सदस्यता मैनेज करें

अब तक, इस कोडलैब में, विषय से जुड़ी सभी सदस्यताएं और सदस्यता न लेने वाले कॉल, ऐप्लिकेशन इंस्टेंस से किए जाते हैं.

हालांकि, इस्तेमाल के कुछ मामलों में, हो सकता है कि आप सर्वर साइड से विषय की सदस्यताओं को मैनेज करना चाहें. उदाहरण के लिए, हो सकता है कि आप ऐप्लिकेशन के लॉन्च का इंतज़ार किए बिना, नए विषय के लिए अपने मौजूदा उपयोगकर्ता आधार के किसी सबग्रुप की सदस्यता लेना चाहें.

इस सेक्शन में, सर्वर साइड से कॉल करके किसी विषय के FCM रजिस्ट्रेशन टोकन के बैच की सदस्यता लेने और उसकी सदस्यता छोड़ने के लिए, Firebase एडमिन SDK टूल का इस्तेमाल करने का तरीका बताया गया है.

FCM रजिस्ट्रेशन टोकन की सर्वर साइड सदस्यता को FCM से जुड़े विषय पर लागू करना

  1. सर्वर कोड इस्तेमाल करके, FcmSubscriptionManager.java क्लास में जाएं. subscribeFcmRegistrationTokensToTopic नाम का तरीका ढूंढें. कॉल को subscribeToTopic एपीआई को यहां लागू करना होगा.

5d5709e7b3cbcb04.png

  1. चलिए, ऐप्लिकेशन इंस्टेंस की सदस्यता ऊर्जा वाले विषय पर लेते हैं. ऐसा करने के लिए, पहले इन दो फ़ील्ड के लिए डेटा उपलब्ध कराएं:
    1. registrationTokens: FCM रजिस्ट्रेशन टोकन की जानकारी देने वाली स्ट्रिंग की कॉमा-सेपरेटेड लिस्ट, जिसके लिए आपको विषय की सदस्यताएं बनानी हैं.
    2. topicName: ऊर्जा से जुड़े विषय के लिए, विषय का नाम, जैसे कि /topics/Energy.
  2. अगली कुछ लाइनों में, कॉल को इन लाइनों के साथ लागू करें:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. बेहतर नतीजे से जुड़े कुछ आंकड़ों के लिए, TopicManagementResponse की जांच की जा सकती है. उदाहरण के लिए, getSuccessCount का इस्तेमाल करके विषय की सदस्यताओं की संख्या प्रिंट करना.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. आखिर में, main फ़ंक्शन में, सिर्फ़ subscribeFcmRegistrationTokensToTopic फ़ंक्शन को कॉल करने की सुविधा चालू करें.

सदस्यता बनाएं और विषय के मैसेज भेजें

  1. अब आप विषय सदस्यता बनाने और उसे संदेश भेजने के लिए तैयार हैं.
  2. FcmSubscriptionManager.java क्लास का main फ़ंक्शन एक्ज़ीक्यूट करें. इससे एक विषय सदस्यता बन जाएगी.
  3. अब, मैसेज भेजने के लिए कोड सेट अप करें. पहले की तरह,
    1. FcmSender.java में, sendMessageToFcmTopic फ़ंक्शन ढूंढें.
    2. topicName को एनर्जी वाले विषय पर सेट करें. इसका मतलब है कि /topics/Energy.
    3. Message ऑब्जेक्ट बनाएं और setTopic का इस्तेमाल करके उसे विषय पर टारगेट करें.
    4. आखिर में, सिर्फ़ sendMessageToFcmTopic फ़ंक्शन को चालू करने के लिए main तरीके को अपडेट करें.
  4. FcmSender.java के main फ़ंक्शन को एक्ज़ीक्यूट करें. ऐसा करने पर, आपके ऐप्लिकेशन इंस्टेंस पर मैसेज भेज दिया जाएगा. साथ ही, अपने ऐप्लिकेशन में यह मैसेज इस तरह देखा जा सकता है.
    1. फ़ोरग्राउंड में ऐप्लिकेशन इंस्टेंस
    40ab6cf71e0e4116.png
    1. बैकग्राउंड में ऐप्लिकेशन इंस्टेंस
    8fba81037198209e.png

FCM रजिस्ट्रेशन टोकन की सदस्यता रद्द करने की कार्रवाई को सर्वर साइड से लागू करना

  1. सर्वर साइड पर मौजूद विषय की सदस्यताओं को रद्द करने के लिए, इस unsubscribeFromTopic एपीआई का इस्तेमाल करें. आपको FcmSubscriptionManager.java क्लास के unsubscribeFcmRegistrationTokensFromTopic फ़ंक्शन में सही कोड जोड़ना होगा.

8d9e8ea9d34016bd.png

  1. सर्वर साइड अनसदस्यता कोड को लागू करना और एक विषय संदेश भेजकर इसके प्रभाव की पुष्टि करना, अब आपके लिए एक अभ्यास के रूप में रह गया है.

11. बधाई

बधाई हो कि आपने अपने ऐप्लिकेशन इंस्टेंस के सबग्रुप को मल्टीकास्ट मैसेज भेजने के लिए FCM विषयों का इस्तेमाल कर लिया है. इससे आप अपने उपयोगकर्ताओं तक सही समय पर काम का कॉन्टेंट पहुंचा पाएंगे.

947def3eb33b1e4a.gif

आगे क्या करना है?

कोडलैब का मॉड्यूल पूरा करने के बाद, अन्य प्लैटफ़ॉर्म के लिए अलग-अलग विषय आज़माने के लिए, इन गाइड का इस्तेमाल करें:

पहचान फ़ाइलें