एफसीएम विषयों का उपयोग करते हुए आपका पहला मल्टीकास्ट पुश संदेश

1 परिचय

लक्ष्य

इस कोडलैब में आप सीखेंगे कि अपने मल्टी-प्लेटफ़ॉर्म ऐप को कैसे इंस्ट्रुमेंट किया जाए ताकि आप एफसीएम विषयों का उपयोग करके अपने ऐप इंस्टेंस के विभिन्न उपसमूहों में पुश संदेशों को मल्टीकास्ट कर सकें।

एक बार समाप्त होने पर, आप इन उपसमूहों के साथ-साथ उपसमूहों पर मल्टीकास्ट पुश संदेशों को प्रबंधित करने के लिए एफसीएम बुनियादी ढांचे का लाभ उठाने में सक्षम होंगे।

विषय अवलोकन

विषय संदेशों के साथ आपके ऐप इंस्टेंस के उपसमूहों तक पहुंचने का एक एफसीएम बुनियादी ढांचा समर्थित तरीका है।

एफसीएम संदेश भेजने के साथ-साथ इन विषयों पर सदस्यता बनाए रखने के लिए एपीआई प्रदान करता है। किसी ऐप इंस्टेंस को विषय से जोड़ने और अलग करने की क्रिया को क्रमशः सदस्यता और सदस्यता समाप्त करना कहा जाता है

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

विषय-आधारित मल्टीकास्टिंग को थ्रूपुट के लिए अनुकूलित किया गया है।

आप क्या सीखेंगे

  • किसी मोबाइल ऐप से उपयोगकर्ताओं को विषयों की सदस्यता कैसे लें (और सदस्यता समाप्त करें)।
  • विषयों का उपयोग करके मल्टीकास्ट पुश संदेश कैसे भेजें।
  • विषय शर्तों का उपयोग करके विषयों के संयोजन को संदेश कैसे भेजें।
  • सर्वर साइड पर विषय सब्सक्रिप्शन कैसे प्रबंधित करें और बल्क सब्सक्रिप्शन और अनसब्सक्रिप्शन कैसे करें।

आप क्या बनाएंगे

  • एक एंड्रॉइड ऐप जो विषयों की सदस्यता लेता/अनसब्सक्राइब करता है और विषयों पर भेजे जाने पर संदेश प्राप्त करता है।
  • फायरबेस एडमिन एसडीके का उपयोग करके एक सर्वर साइड एकीकरण, जिसका उपयोग एफसीएम एपीआई के माध्यम से विषय संदेश भेजने के लिए किया जाएगा।

आपको किस चीज़ की ज़रूरत पड़ेगी

  • आपकी पसंद का ब्राउज़र, जैसे Chrome.
  • जावा एप्लिकेशन विकसित करने के लिए IntelliJ IDEA IDE।
    • इंस्टॉल करते समय ग्रैडल के लिए समर्थन का विकल्प चुनना सुनिश्चित करें।
  • एंड्रॉइड एप्लिकेशन विकसित करने के लिए एंड्रॉइड स्टूडियो आईडीई।
  • Android एप्लिकेशन चलाने के लिए एक उपकरण. या तो की:
    • एंड्रॉइड एमुलेटर। ( एंड्रॉइड स्टूडियो में सेटअप की आवश्यकता है)।
    • एक भौतिक Android डिवाइस आपके कंप्यूटर से कनेक्ट है और डेवलपर मोड पर सेट है।
  • आपके फायरबेस प्रोजेक्ट को बनाने और प्रबंधित करने के लिए एक 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 शामिल हैं। पहले में स्टार्टर एंड्रॉइड ऐप है और दूसरे में स्टार्टर सर्वर साइड कोड है।

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

इस कोडलैब का पूर्ण संस्करण messaging/fcm-topics-codelab/completed निर्देशिका में रखा गया है।

एक फायरबेस प्रोजेक्ट बनाएं

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

fc08f9a7808e4553.png

  1. आप Google Analytics को सक्षम करना छोड़ सकते हैं. इस कोडलैब के प्रयोजनों के लिए, आपको इसकी आवश्यकता नहीं है। जारी रखें पर क्लिक करें.
  2. प्रोजेक्ट बनाएं पर क्लिक करें.

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

3. प्लेटफ़ॉर्म-विशिष्ट फ़ायरबेस ऐप कॉन्फ़िगरेशन

जिस प्रोजेक्ट पर आप काम कर रहे हैं उसमें फायरबेस समर्थन को सक्षम करने के लिए आवश्यक अधिकांश कोड परिवर्तन पहले ही जांचे जा चुके हैं। हालाँकि, मोबाइल प्लेटफ़ॉर्म के लिए समर्थन जोड़ने के लिए, आपको यह करना होगा:

  • फायरबेस प्रोजेक्ट पर वांछित प्लेटफॉर्म पंजीकृत करें
  • प्लेटफ़ॉर्म-विशिष्ट कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें, और इसे कोड में जोड़ें।

इस कोडलैब के प्रयोजनों के लिए, हम एक एंड्रॉइड फायरबेस ऐप जोड़ने जा रहे हैं।

84e0b3199bef6d8a.png एंड्रॉइड कॉन्फ़िगर करें

  1. फायरबेस कंसोल में, सेटिंग्स कॉग में बाएं नेविगेशन बार के शीर्ष पर प्रोजेक्ट सेटिंग्स का चयन करें, और सामान्य पृष्ठ में आपके ऐप्स के तहत एंड्रॉइड आइकन पर क्लिक करें।

आपको निम्नलिखित संवाद देखना चाहिए: 8254fc299e82f528.png

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

4. अपना ऐप बनाएं और चलाएं

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

स्टार्टर ऐप आयात करें

एंड्रॉइड स्टूडियो प्रारंभ करें, और स्टार्टर कोड निर्देशिका से messaging/fcm-topics-codelab/starter/StockNewsApp आयात करें।

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

यदि आप एंड्रॉइड व्यू में हैं तो प्रोजेक्ट विंडो के ऊपरी-बाएँ कोने में, आपको नीचे दी गई छवि जैसा कुछ देखना चाहिए। (यदि आप प्रोजेक्ट दृश्य में हैं, तो आपको वही चीज़ देखने के लिए प्रोजेक्ट का विस्तार करना होगा)

b574ea0089ee87c6.png

कृपया ध्यान दें कि एंड्रॉइड स्टूडियो को पहली बार प्रोजेक्ट को पृष्ठभूमि में संकलित करने में कई सेकंड लग सकते हैं। इस दौरान आपको एंड्रॉइड स्टूडियो के नीचे स्टेटस बार में एक स्पिनर दिखाई देगा:

4bc64eb3b99eb0ae.png

हमारा सुझाव है कि आप कोड परिवर्तन करने से पहले इसके समाप्त होने तक प्रतीक्षा करें। यह एंड्रॉइड स्टूडियो को सभी आवश्यक घटकों को खींचने की अनुमति देगा।

इसके अलावा, यदि आपको यह कहने का संकेत मिलता है कि "भाषा परिवर्तन को प्रभावी बनाने के लिए पुनः लोड करें?" या ऐसा ही कुछ, "हाँ" चुनें।

एम्यूलेटर सेटअप

यदि आपको एंड्रॉइड एमुलेटर स्थापित करने में सहायता की आवश्यकता है, तो अपना ऐप चलाएं लेख देखें।

एंड्रॉइड ऐप स्टार्टर कोड को समझें

  • स्टार्टर कोड न्यूनतम कार्यक्षमता और यूआई वाला एक हल्का एंड्रॉइड ऐप है।
  • फ़ायरबेस-मैसेजिंग SDK पर निर्भरता पहले से ही app/build.gradle फ़ाइल में जोड़ी गई है।

f04ff8f48d186dff.png

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

b32663ec4e865a18.png

स्टार्टर ऐप चलाएँ

  1. अपने एंड्रॉइड डिवाइस को अपने कंप्यूटर से कनेक्ट करें या एक एमुलेटर शुरू करें।
  2. शीर्ष टूलबार में, अपना लक्ष्य एंड्रॉइड डिवाइस या एमुलेटर चुनें और रन बटन दबाएं।

5b27fc5b237e06b9.png

  1. ऐप यूआई इस प्रकार दिखेगा:

ff5b1a1c53231c54.png

  1. ऐप एक एफसीएम पंजीकरण टोकन बनाएगा और उसे लॉग करेगा। हालाँकि ऐप यूआई में कुछ भी नहीं बदलेगा।
    1. एफसीएम पंजीकरण टोकन को कॉपी करें और सहेजें क्योंकि इसका उपयोग अगले चरणों में किया जाएगा।

927eb66bc909f36b.png

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

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

स्टार्टर सर्वर कोड आयात करें

IntelliJ IDEA प्रारंभ करें और messaging/fcm-topics-codelab/starter/StockNewsServer प्रोजेक्ट खोलें।

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

da20711f6527dff6.png

ध्यान दें, IntellIj IDEA को आपका प्रोजेक्ट बनाने में कुछ मिनट लग सकते हैं, जिसमें आवश्यक निर्भरताएँ खींचना भी शामिल है।

सर्वर स्टार्टर कोड को समझें

  • सर्वर स्टार्टर कोड एक ग्रैडल-आधारित जावा प्रोजेक्ट है।
  • build.gradle फ़ाइल में पहले से ही जोड़े गए फायरबेस-एडमिन एसडीके पर निर्भरता है। यह एसडीके विभिन्न एफसीएम संदेश भेजने की कार्यक्षमता तक पहुंच प्रदान करता है।

650fc733298588f8.png

  • अंततः, दो वर्ग हैं, अर्थात्:
    • FcmSender.java : इस वर्ग में नोट की निम्नलिखित विधियाँ शामिल हैं:
      • initFirebaseSDK : फायरबेस-एडमिन SDK को आरंभ करता है।
      • sendMessageToFcmRegistrationToken : FCM पंजीकरण टोकन के लिए एक संदेश भेजें।
      • sendMessageToFcmTopic : FCM विषय पर एक संदेश भेजें।
      • sendMessageToFcmTopicCondition : FCM विषय स्थिति के लिए एक संदेश भेजें।
    • FcmSubscriptionManager.java : इस वर्ग में वे विधियाँ हैं जो सर्वर साइड से विषय सदस्यता को प्रबंधित करने की अनुमति देती हैं।
      • initFirebaseSDK : फायरबेस-एडमिन SDK को आरंभ करता है।
      • subscribeFcmRegistrationTokensToTopic : किसी FCM विषय के लिए FCM पंजीकरण टोकन की सदस्यता लें।
      • unsubscribeFcmRegistrationTokensFromTopic : किसी FCM विषय से FCM पंजीकरण टोकन की सदस्यता समाप्त करें।

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

  1. सबसे पहले, हमें एक फायरबेस सेवा खाता स्थापित करने की आवश्यकता है जो फायरबेस-एडमिन एसडीके को एफसीएम एपीआई पर कॉल को अधिकृत करने की अनुमति देता है।
    1. फायरबेस कंसोल पर जाएं, बाएं नेविगेशन बार में प्रोजेक्ट अवलोकन के बगल में गियर आइकन पर क्लिक करें और प्रोजेक्ट सेटिंग्स चुनें। 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 फ़ील्ड में कैसे सेट किया जाता है।
    2. इसके अलावा, ध्यान दें कि हमने FirebaseMessaging इंटरफ़ेस के send एपीआई का उपयोग कैसे किया है।

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

  1. और जब ऐप इंस्टेंस पृष्ठभूमि में होगा, तो आप अधिसूचना ट्रे में संदेश प्रकट होते देखेंगे।

31203deca59c03fe.png

बहुत बढ़िया, आपने ऐप इंस्टेंस पर संदेश भेजने के लिए फायरबेस एडमिन एसडीके का उपयोग किया। अपने सर्वर में फायरबेस एडमिन एसडीके का उपयोग करने के बारे में और पढ़ें।

6. विषय सदस्यता/अनसदस्यता लागू करें

इस चरण में आप एंड्रॉइड ऐप के स्टॉक श्रेणी टॉगल पर विषय सदस्यता और सदस्यता रद्द करने की कार्रवाइयां लागू करेंगे।

जब कोई ऐप उपयोगकर्ता किसी विशेष स्टॉक श्रेणी के लिए स्विच टॉगल करता है, तो एक विषय सदस्यता या अनसब्सक्रिप्शन कॉल किया जाएगा।

समीक्षा कोड

  • एंड्रॉइड ऐप कोड में SubscriptionAdapter.java क्लास पर नेविगेट करें और RecyclerViewViewHolder क्लास का पता लगाएं।

6c0614199e684f6.png

  • क्लास कंस्ट्रक्टर setOnCheckedChangeListener का उपयोग करके सदस्यता टॉगल के लिए एक श्रोता सेट करता है।
  • स्विच टॉगल के आधार पर, सब्सक्राइब और अनसब्सक्राइब क्रियाएं क्रमशः subscribeToStockCategory और unsubscribeFromStockCategory विधियों को कॉल करके की जाती हैं।
  • व्यूहोल्डर को उचित स्टॉक श्रेणी के साथ बांधने के लिए RecyclerView एडाप्टर के onBindViewHolder द्वारा setData विधि को कॉल किया जाता है।

विषय सदस्यता लागू करें

  1. subscribeToStockCategory विधि में, आप FirebaseMessaging ऑब्जेक्ट के subscribeToTopic API पर कॉल लागू करेंगे। कोड कुछ इस तरह दिख सकता है:
   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 API पर कॉल लागू करेंगे। कुछ इस प्रकार:
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. अपना पहला विषय स्थिति संदेश भेजना

विषय शर्त सुविधा आपको विषयों के संयोजन में संदेश भेजने की अनुमति देती है जिससे आप अधिक अभिव्यंजक श्रोता परिभाषा प्रदान कर सकते हैं।

उदाहरण के लिए, हमारे स्टॉकन्यूज़ ऐप में, ऐप इंस्टेंस के एक समूह को संदेश भेजने की संभावना पर विचार करें, जो प्रौद्योगिकी या ऑटोमोटिव विषयों की सदस्यता लेते हैं। उदाहरण के लिए, ऐसा मामला घटित हो सकता है, यदि वेमो से जुड़ी कोई उल्लेखनीय घटना हो।

विषय आपको निम्नलिखित ऑपरेटरों का उपयोग करके अपने संयोजन को बूलियन अभिव्यक्ति के रूप में व्यक्त करने की अनुमति देता है

  • && : तार्किक तथा। उदाहरण के लिए, 'Technology' in topics && 'Automotive' in topics - केवल उन ऐप इंस्टेंस को लक्षित करता है जो प्रौद्योगिकी और ऑटोमोटिव विषयों दोनों के लिए सब्सक्राइब किए गए हैं।
  • || : तार्किक या. उदाहरण के लिए, '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. सर्वर साइड से विषय सदस्यता प्रबंधित करें

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

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

इस अनुभाग में, आप सीखेंगे कि सर्वर साइड से कॉल करके किसी विषय पर एफसीएम पंजीकरण टोकन के एक बैच की सदस्यता लेने और सदस्यता समाप्त करने के लिए फायरबेस एडमिन एसडीके का उपयोग कैसे करें।

एफसीएम विषय पर एफसीएम पंजीकरण टोकन की सर्वर साइड सदस्यता लागू करें

  1. सर्वर कोड में, FcmSubscriptionManager.java क्लास में जाएं। subscribeFcmRegistrationTokensToTopic नामक विधि का पता लगाएं। आप यहां subscribeToTopic API पर कॉल लागू करेंगे।

5d5709e7b3cbcb04.png

  1. आइए ऊर्जा विषय पर ऐप इंस्टेंस की सदस्यता लें। ऐसा करने के लिए, सबसे पहले निम्नलिखित दो फ़ील्ड के लिए डेटा प्रदान करें:
    1. registrationTokens : एफसीएम पंजीकरण टोकन का प्रतिनिधित्व करने वाली स्ट्रिंग की अल्पविराम से अलग की गई सूची जिसके लिए आप विषय सदस्यता बनाना चाहते हैं।
    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

एफसीएम विषय पर एफसीएम पंजीकरण टोकन की सर्वर साइड सदस्यता रद्द करें लागू करें

  1. सर्वर साइड विषय सदस्यता रद्द करने के लिए, इस unsubscribeFromTopic API का उपयोग करें। आप FcmSubscriptionManager.java क्लास के unsubscribeFcmRegistrationTokensFromTopic फ़ंक्शन में प्रासंगिक कोड जोड़ देंगे।

8d9e8ea9d34016bd.png

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

11. बधाई हो

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

947def3eb33b1e4a.gif

आगे क्या होगा?

अब जब आपने अपना कोडलैब पूरा कर लिया है, तो निम्नलिखित गाइड का उपयोग करके अन्य प्लेटफार्मों के लिए विषयों को आज़माने पर विचार करें:

संदर्भ दस्तावेज़