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

1 परिचय

लक्ष्य

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

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

विषय अवलोकन

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

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

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

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

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

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

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

  • एक Android ऐप जो विषयों को सब्सक्राइब/अनसब्सक्राइब करता है और विषयों पर भेजे जाने पर संदेश प्राप्त करता है।
  • Firebase Admin SDK का उपयोग करने वाला सर्वर साइड एकीकरण, जिसका उपयोग FCM API के माध्यम से विषय संदेश भेजने के लिए किया जाएगा।

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

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

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

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

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

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

fc08f9a7808e4553.png

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

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

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

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

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

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

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

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

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

  1. प्रदान करने के लिए महत्वपूर्ण मूल्य Android पैकेज नाम है । इसे 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 " पर क्लिक कर सकते हैं। (आप गिट रेपो में किसी भी बदलाव को वापस नहीं लाएंगे।)

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

b574ea0089ee87c6.png

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

4bc64eb3b99eb0ae.png

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

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

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

यदि आपको Android एमुलेटर सेट करने में सहायता चाहिए, तो रन योर ऐप आलेख देखें।

Android ऐप स्टार्टर कोड को समझें

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

f04ff8f48d186dff.png

  • AndroidManifest.xml में, एक MESSAGING_EVENT कॉलबैक हैंडलर पहले ही जोड़ा जा चुका है।
    • यह हैंडलर, StockNewsMessagingService.java FirebaseMessagingService वर्ग का विस्तार करता है जो विभिन्न फायरबेस क्लाउड मैसेजिंग संबंधित कार्यक्षमता प्रदान करता है। अधिक जानने के लिए FirebaseMessagingService दस्तावेज़ देखें। 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 लागू करता है जो स्टॉक श्रेणी चयन स्क्रीन खींचता है।
    • प्रत्येक स्टॉक श्रेणी का एक नाम और उसके आगे एक सदस्यता टॉगल होता है।
    • टॉगल बदलने से FCM विषय सदस्यता / सदस्यता समाप्त कॉल करना चाहिए।
    • आप इन कॉलों को आगामी अनुभागों में लागू करेंगे।
  • model/StockCategories.java वर्ग में सभी स्टॉक श्रेणियों और उनके संबंधित विषय नामों की एक सूची है।

b32663ec4e865a18.png

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

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

5b27fc5b237e06b9.png

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

ff5b1a1c53231c54.png

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

927eb66bc909f36b.png

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

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

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

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

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

da20711f6527dff6.png

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

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

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

650fc733298588f8.png

  • अंत में, दो वर्ग हैं, अर्थात:
    • FcmSender.java : इस वर्ग में नोट करने की निम्नलिखित विधियाँ हैं:
      • initFirebaseSDK : फायरबेस-एडमिन एसडीके को इनिशियलाइज़ करता है।
      • sendMessageToFcmRegistrationToken : एक FCM पंजीकरण टोकन को एक संदेश भेजें।
      • sendMessageToFcmTopic : किसी FCM विषय पर संदेश भेजें।
      • sendMessageToFcmTopicCondition : किसी FCM विषय स्थिति के लिए एक संदेश भेजें।
    • FcmSubscriptionManager.java : इस वर्ग में वे विधियाँ हैं जो सर्वर साइड से विषय सदस्यता को प्रबंधित करने की अनुमति देती हैं।
      • initFirebaseSDK : फायरबेस-एडमिन एसडीके को इनिशियलाइज़ करता है।
      • 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. देखें कि FCM पंजीकरण टोकन को message ऑब्जेक्ट के Token फ़ील्ड में कैसे सेट किया जाता है।
    2. इसके अलावा, ध्यान दें कि हमने FirebaseMessaging इंटरफ़ेस के send एपीआई का उपयोग कैसे किया है।

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

  1. और जब ऐप इंस्टेंस बैकग्राउंड में होता है, तो आप देखेंगे कि मैसेज नोटिफिकेशन ट्रे में दिखाई देता है।

31203deca59c03fe.png

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

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

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

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

समीक्षा कोड

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

6c0614199e684f6.png

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

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

  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 करने के लिए फ्रॉमटॉपिक एपीआई लागू करेंगे। निम्नलिखित की तर्ज पर कुछ:
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 नाम की विधि का पता 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 ऐप में, ऐप इंस्टेंस के समूह को संदेश भेजने की संभावना पर विचार करें, जो या तो प्रौद्योगिकी या ऑटोमोटिव विषयों की सदस्यता लेते हैं। ऐसा मामला हो सकता है, उदाहरण के लिए, यदि कोई उल्लेखनीय घटना है जिसमें वायमो शामिल है।

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

  • && : तार्किक और। उदाहरण के लिए, '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 नामक विधि का पता 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 टोकन: एफसीएम पंजीकरण टोकन का प्रतिनिधित्व करने वाली स्ट्रिंग की एक अल्पविराम से अलग सूची जिसके लिए आप विषय सदस्यता बनाना चाहते हैं।
    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 विषय पर FCM पंजीकरण टोकन की सर्वर साइड अनसब्सक्रिप्शन लागू करें

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

8d9e8ea9d34016bd.png

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

11. बधाई

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

947def3eb33b1e4a.gif

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

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

संदर्भ डॉक्स