Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

FCM संदेशों के बारे में

फायरबेस क्लाउड मैसेजिंग (FCM) मैसेजिंग विकल्पों और क्षमताओं की एक विस्तृत श्रृंखला प्रदान करता है। इस पृष्ठ की जानकारी का उद्देश्य आपको विभिन्न प्रकार के FCM संदेशों को समझने में मदद करना है और आप उनके साथ क्या कर सकते हैं।

संदेश प्रकार

FCM के साथ, आप क्लाइंट को दो प्रकार के संदेश भेज सकते हैं:

  • अधिसूचना संदेश, कभी-कभी "संदेश प्रदर्शित करें" के रूप में सोचा जाता है। इन्हें FCM SDK द्वारा स्वचालित रूप से नियंत्रित किया जाता है।
  • डेटा संदेश, जिन्हें क्लाइंट ऐप द्वारा नियंत्रित किया जाता है।

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

परिदृश्य का प्रयोग करें कैसे भेजें
अधिसूचना संदेश FCM क्लाइंट ऐप की ओर से स्वचालित रूप से अंतिम-उपयोगकर्ता उपकरणों को संदेश प्रदर्शित करता है। अधिसूचना संदेशों में उपयोगकर्ता-दृश्यमान कुंजियों का एक पूर्वनिर्धारित सेट और कस्टम कुंजी-मूल्य जोड़े का एक वैकल्पिक डेटा पेलोड होता है।
  1. इस तरह के रूप में एक विश्वसनीय वातावरण में बादल कार्य या अपने अनुप्रयोग सर्वर, का उपयोग नियंत्रक SDK या FCM सर्वर प्रोटोकॉल सेट करें: notification कुंजी। वैकल्पिक डेटा पेलोड हो सकता है। हमेशा बंधनेवाला।

    कुछ देखें प्रदर्शन सूचनाओं के उदाहरण और भेजें अनुरोध पेलोड।

  2. का प्रयोग करें सूचनाएं संगीतकार : संदेश पाठ, शीर्षक, आदि दर्ज करें, और भेजें। कस्टम डेटा प्रदान करके वैकल्पिक डेटा पेलोड जोड़ें।
डेटा संदेश क्लाइंट ऐप डेटा संदेशों को संसाधित करने के लिए ज़िम्मेदार है। डेटा संदेशों में केवल कस्टम कुंजी-मान जोड़े होते हैं जिनमें कोई आरक्षित कुंजी नाम नहीं होता है (नीचे देखें)। इस तरह के रूप में एक विश्वसनीय वातावरण में बादल कार्य या अपने अनुप्रयोग सर्वर, का उपयोग नियंत्रक SDK या FCM सर्वर प्रोटोकॉल सेट करें: data केवल कुंजी।

सूचना संदेशों का उपयोग तब करें जब आप चाहते हैं कि FCM आपके क्लाइंट ऐप की ओर से एक सूचना प्रदर्शित करे। जब आप अपने क्लाइंट ऐप पर संदेशों को संसाधित करना चाहते हैं तो डेटा संदेशों का उपयोग करें।

FCM एक वैकल्पिक डेटा पेलोड सहित एक सूचना संदेश भेज सकता है। ऐसे मामलों में, एफसीएम अधिसूचना पेलोड प्रदर्शित करता है, और क्लाइंट ऐप डेटा पेलोड को संभालता है।

अधिसूचना संदेश

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

नियंत्रक SDK या FCM प्रोटोकॉल का उपयोग प्रोग्राम के रूप में भेजने के सूचना संदेश करने के लिए, सेट notification सूचना संदेश के उपयोगकर्ता दृश्य भाग के लिए कुंजी-मान विकल्पों में से आवश्यक पूर्वनिर्धारित सेट के साथ कुंजी। उदाहरण के लिए, यहां एक IM ऐप में JSON-स्वरूपित सूचना संदेश दिया गया है। उपयोगकर्ता "पुर्तगाल बनाम डेनमार्क" शीर्षक वाला संदेश और "महान मैच!" उपकरण पर:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

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

सूचना संदेश बनाने के लिए उपलब्ध पूर्वनिर्धारित कुंजियों की पूरी सूची के लिए संदर्भ दस्तावेज़ देखें:

डेटा संदेश

क्लाइंट ऐप पर डेटा पेलोड भेजने के लिए अपने कस्टम की-वैल्यू पेयर के साथ उपयुक्त कुंजी सेट करें।

उदाहरण के लिए, यहाँ एक ही आईएम ऐप्लिकेशन में JSON- प्रारूपण संदेश के ऊपर है, जहां जानकारी आम में समझाया गया है के रूप में है data कुंजी और ग्राहक एप्लिकेशन सामग्री की व्याख्या की उम्मीद है:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

शीर्ष स्तर के, या आम के ऊपर के उदाहरण से पता चलता है उपयोग data क्षेत्र है, जो सभी प्लेटफार्मों कि संदेश प्राप्त होता है पर ग्राहकों द्वारा स्वीकार किया गया। प्रत्येक प्लेटफ़ॉर्म पर, क्लाइंट ऐप कॉलबैक फ़ंक्शन में डेटा पेलोड प्राप्त करता है।

डेटा संदेशों के लिए एन्क्रिप्शन

एंड्रॉयड ट्रांसपोर्ट लेयर (देखें FCM वास्तुकला ) बिंदु से बिंदु एन्क्रिप्शन का उपयोग करता। अपनी आवश्यकताओं के आधार पर, आप डेटा संदेशों में संपूर्ण एन्क्रिप्शन जोड़ने का निर्णय ले सकते हैं। FCM एंड-टू-एंड समाधान प्रदान नहीं करता है। हालांकि, वहाँ इस तरह के रूप में बाहरी समाधान उपलब्ध हैं केशिका या DTLS

वैकल्पिक डेटा पेलोड के साथ अधिसूचना संदेश

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

संदेश प्राप्त करते समय ऐप का व्यवहार जिसमें अधिसूचना और डेटा पेलोड दोनों शामिल हैं, इस पर निर्भर करता है कि ऐप पृष्ठभूमि में है या अग्रभूमि में-अनिवार्य रूप से, यह प्राप्ति के समय सक्रिय है या नहीं।

  • जब पृष्ठभूमि में, क्षुधा अधिसूचना ट्रे में अधिसूचना पेलोड प्राप्त करते हैं, और केवल डेटा पेलोड संभाल जब उपयोगकर्ता अधिसूचना पर टैप करता।
  • जब अग्रभूमि में, यदि आपका ऐप पेलोड उपलब्ध के साथ एक संदेश वस्तु प्राप्त करता है।

यहाँ JSON- प्रारूपण दोनों युक्त संदेश है notification कुंजी और data कुंजी:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

प्लेटफार्मों पर एक संदेश को अनुकूलित करना

Firebase नियंत्रक SDK और FCM v1 HTTP प्रोटोकॉल दोनों अपने संदेश अनुरोधों सभी क्षेत्रों में उपलब्ध निर्धारित करने की अनुमति message वस्तु। यह भी शामिल है:

  • क्षेत्रों के एक सामान्य सेट सभी एप्लिकेशन उदाहरणों कि संदेश प्राप्त होता है से व्याख्या किया जाना है।
  • जैसे क्षेत्रों, के प्लेटफ़ॉर्म-विशिष्ट सेट AndroidConfig और WebpushConfig , निर्दिष्ट मंच पर चल रहे एप्लिकेशन उदाहरणों द्वारा केवल व्याख्या की।

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

सामान्य क्षेत्रों का उपयोग कब करें

सामान्य फ़ील्ड का उपयोग करें जब आप:

  • सभी प्लेटफार्मों पर एप्लिकेशन उदाहरणों का लक्ष्य निर्धारण - iOS, Android, और वेब
  • विषयों पर संदेश भेजना

प्लेटफ़ॉर्म की परवाह किए बिना सभी ऐप इंस्टेंस, निम्नलिखित सामान्य क्षेत्रों की व्याख्या कर सकते हैं:

प्लेटफ़ॉर्म-विशिष्ट फ़ील्ड का उपयोग कब करें

जब आप चाहें, तो प्लेटफ़ॉर्म-विशिष्ट फ़ील्ड का उपयोग करें:

  • फ़ील्ड केवल विशेष प्लेटफ़ॉर्म पर भेजें
  • सामान्य फ़ील्ड के अलावा मंच-विशिष्ट फ़ील्ड भेजें

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

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

उदाहरण: प्लेटफ़ॉर्म-विशिष्ट वितरण विकल्पों के साथ सूचना संदेश

निम्न v1 भेजें अनुरोध सभी प्लेटफ़ॉर्म पर एक सामान्य सूचना शीर्षक और सामग्री भेजता है, लेकिन कुछ प्लेटफ़ॉर्म-विशिष्ट ओवरराइड भी भेजता है। विशेष रूप से, अनुरोध:

  • एपीएन (आईओएस) संदेश प्राथमिकता को कम सेटिंग पर सेट करते हुए, एंड्रॉइड और वेब प्लेटफॉर्म के लिए लंबे समय तक लाइव सेट करता है
  • उचित कुंजी सेट Android और iOS पर अधिसूचना पर एक उपयोगकर्ता नल का परिणाम परिभाषित करने के लिए - click_action , और category क्रमश।
{
  "message":{
     "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
     "notification":{
       "title":"Match update",
       "body":"Arsenal goal in added time, score is now 3-0"
     },
     "android":{
       "ttl":"86400s",
       "notification"{
         "click_action":"OPEN_ACTIVITY_1"
       }
     },
     "apns": {
       "headers": {
         "apns-priority": "5",
       },
       "payload": {
         "aps": {
           "category": "NEW_MESSAGE_CATEGORY"
         }
       }
     },
     "webpush":{
       "headers":{
         "TTL":"86400"
       }
     }
   }
 }

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

वितरण विकल्प

FCM Android उपकरणों को भेजे गए संदेशों के लिए वितरण विकल्पों का एक विशिष्ट सेट प्रदान करता है, और iOS और वेब पर समान विकल्पों की अनुमति देता है। उदाहरण के लिए, "सिमटने" संदेश व्यवहार Android पर FCM के द्वारा समर्थित है collapse_key के माध्यम से, iOS पर apns-collapse-id के माध्यम से जावास्क्रिप्ट / वेब पर, और Topic । विवरण के लिए, इस खंड में विवरण और संबंधित संदर्भ दस्तावेज देखें।

गैर-बंधनेवाला और संक्षिप्त होने योग्य संदेश

एक गैर सिमटने संदेश अर्थ है कि प्रत्येक व्यक्तिगत संदेश डिवाइस के लिए दिया जाता है। डेटा प्राप्त करने के लिए सर्वर से संपर्क करने के लिए मोबाइल ऐप पर सामग्री-मुक्त "पिंग" जैसे एक संक्षिप्त संदेश के विपरीत, एक गैर-बंधनेवाला संदेश कुछ उपयोगी सामग्री वितरित करता है।

गैर-संक्षिप्त संदेशों के कुछ विशिष्ट उपयोग के मामले चैट संदेश या महत्वपूर्ण संदेश हैं। उदाहरण के लिए, किसी IM ऐप में, आप प्रत्येक संदेश को डिलीवर करना चाहेंगे, क्योंकि प्रत्येक संदेश में भिन्न सामग्री होती है।

एंड्रॉइड के लिए 100 संदेशों की एक सीमा है जिसे बिना ढहाए संग्रहीत किया जा सकता है। यदि सीमा समाप्त हो जाती है, तो सभी संग्रहीत संदेशों को छोड़ दिया जाता है। जब डिवाइस वापस ऑनलाइन होता है, तो उसे एक विशेष संदेश प्राप्त होता है जो दर्शाता है कि सीमा समाप्त हो गई है। ऐप तब स्थिति को ठीक से संभाल सकता है, आमतौर पर ऐप सर्वर से पूर्ण सिंक का अनुरोध करके।

एक सिमटने संदेश संदेश है कि नया संदेश द्वारा प्रतिस्थापित किया जा सकता है यदि यह अभी तक डिवाइस के लिए वितरित किए जाने गया है।

बंधनेवाला संदेशों का एक सामान्य उपयोग के मामले ऐसे संदेश हैं जिनका उपयोग मोबाइल ऐप को सर्वर से डेटा सिंक करने के लिए कहने के लिए किया जाता है। एक उदाहरण एक स्पोर्ट्स ऐप होगा जो उपयोगकर्ताओं को नवीनतम स्कोर के साथ अपडेट करता है। केवल सबसे हालिया संदेश प्रासंगिक है।

एंड्रॉयड पर सिमटने के रूप में संदेश चिह्नित करने के लिए, शामिल collapse_key संदेश पेलोड में पैरामीटर। डिफ़ॉल्ट रूप से, संक्षिप्त कुंजी Firebase कंसोल में पंजीकृत ऐप पैकेज नाम है। FCM सर्वर एक साथ प्रति डिवाइस चार अलग-अलग संक्षिप्त होने योग्य संदेशों को संग्रहीत कर सकता है, प्रत्येक एक अलग संक्षिप्त कुंजी के साथ। यदि आप इस संख्या को पार कर जाते हैं, तो FCM केवल चार पतन कुंजियाँ रखता है, इस बात की कोई गारंटी नहीं है कि कौन-सी कुंजियाँ रखी जाएँगी।

बिना पेलोड वाले विषय संदेश डिफ़ॉल्ट रूप से संक्षिप्त किए जा सकते हैं।

मुझे किसका उपयोग करना चाहिए?

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

परिदृश्य का प्रयोग करें कैसे भेजें
गैर सिमटने क्लाइंट ऐप के लिए हर संदेश महत्वपूर्ण है और इसे डिलीवर करने की आवश्यकता है। अधिसूचना संदेशों को छोड़कर, सभी संदेश डिफ़ॉल्ट रूप से गैर-संक्षिप्त होते हैं।
खुलने और बंधनेवाला जब कोई नया संदेश आता है जो क्लाइंट ऐप के लिए एक पुराने, संबंधित संदेश को अप्रासंगिक बनाता है, तो FCM पुराने संदेश को बदल देता है। उदाहरण के लिए: सर्वर से डेटा सिंक शुरू करने के लिए उपयोग किए जाने वाले संदेश, या पुराने अधिसूचना संदेश। अपने संदेश अनुरोध में उपयुक्त पैरामीटर सेट करें:
  • collapseKey Android पर
  • apns-collapse-id iOS पर
  • Topic वेब पर
  • collapse_key विरासत प्रोटोकॉल में (सभी प्लेटफार्मों)

संदेश की प्राथमिकता निर्धारित करना

Android पर डाउनस्ट्रीम संदेशों को वितरण प्राथमिकता देने के लिए आपके पास दो विकल्प हैं: सामान्य और उच्च प्राथमिकता। सामान्य और उच्च प्राथमिकता वाले संदेशों का वितरण इस प्रकार काम करता है:

  • सामान्य प्राथमिकता। इस के लिए डिफ़ॉल्ट प्राथमिकता है डेटा संदेश । जब ऐप अग्रभूमि में होता है तो सामान्य प्राथमिकता वाले संदेश तुरंत डिलीवर हो जाते हैं। जब डिवाइस डोज़ में होता है, तो बैटरी बचाने के लिए डिलीवरी में देरी हो सकती है। कम समय के प्रति संवेदनशील संदेशों के लिए, जैसे कि नए ईमेल की सूचनाएं, अपने UI को सिंक में रखना, या ऐप डेटा को पृष्ठभूमि में समन्वयित करना, सामान्य वितरण प्राथमिकता चुनें।

    जब कि अपने ऐप के लिए पृष्ठभूमि डेटा सिंक का अनुरोध करता है Android पर एक सामान्य प्राथमिकता संदेश प्राप्त करने के लिए, आप के साथ एक कार्य निर्धारित कर सकते हैं WorkManager नेटवर्क उपलब्ध है इसे संभाल करने के लिए।

  • उच्च प्राथमिकता। FCM तुरंत उच्च प्राथमिकता वाले संदेश देने का प्रयास करता है, FCM सेवा को आवश्यक होने पर स्लीपिंग डिवाइस को जगाने और कुछ सीमित प्रोसेसिंग (बहुत सीमित नेटवर्क एक्सेस सहित) चलाने की अनुमति देता है। उच्च प्राथमिकता वाले संदेशों का परिणाम आम तौर पर आपके ऐप या इसकी सूचनाओं के साथ उपयोगकर्ता के संपर्क में आना चाहिए। यदि FCM को ऐसे पैटर्न का पता चलता है जिसमें वे नहीं करते हैं, तो आपके संदेशों को प्राथमिकता से हटाया जा सकता है। एंड्रॉयड पी पेश किया एप्लिकेशन अतिरिक्त बाल्टी जो FCM उच्च प्राथमिकता संदेशों की संख्या सीमित आप अपने अनुप्रयोग है कि आपके एप्लिकेशन का उपयोग या एक अधिसूचना को देखने के उपयोगकर्ता में परिणाम नहीं करने के लिए भेज सकते हैं। यदि, एक उच्च प्राथमिकता वाले संदेश के जवाब में, एक अधिसूचना इस तरह प्रदर्शित होती है जो उपयोगकर्ता को दिखाई देती है, तो उस संदेश द्वारा आपके ऐप स्टैंडबाय बकेट कोटा का उपभोग नहीं किया जाएगा।

    चूंकि एंड्रॉइड मोबाइल आबादी का एक छोटा हिस्सा उच्च विलंबता नेटवर्क पर है, इसलिए अधिसूचना प्रदर्शित करने से पहले अपने सर्वर से कनेक्शन खोलने से बचें। अनुमत संसाधन समय की समाप्ति से पहले सर्वर पर वापस कॉल करना उच्च विलंबता नेटवर्क पर उपयोगकर्ताओं के लिए जोखिम भरा हो सकता है। इसके बजाय, एफसीएम संदेश में अधिसूचना सामग्री शामिल करें और इसे तुरंत प्रदर्शित करें। आप Android पर अतिरिक्त एप्लिकेशन के तहत सामग्री के लिए सिंक करने की जरूरत है, तो आप के साथ एक कार्य निर्धारित कर सकते हैं WorkManager कि संभाल करने के लिए पृष्ठभूमि में।

एक पत्रिका ग्राहक को सूचित करने के लिए कि नई सामग्री डाउनलोड करने के लिए उपलब्ध है, FCM HTTP v1 प्रोटोकॉल के माध्यम से भेजे गए सामान्य प्राथमिकता संदेश का एक उदाहरण यहां दिया गया है:

{
  "message":{
    "topic":"subscriber-updates",
    "notification":{
      "body" : "This week's edition is now available.",
      "title" : "NewsMagazine.com",
    },
    "data" : {
      "volume" : "3.21.15",
      "contents" : "http://www.news-magazine.com/world-week/21659772"
    },
    "android":{
      "priority":"normal"
    },
    "apns":{
      "headers":{
        "apns-priority":"5"
      }
    },
    "webpush": {
      "headers": {
        "Urgency": "high"
      }
    }
  }
}

संदेश प्राथमिकता निर्धारित करने पर अधिक प्लेटफ़ॉर्म-विशिष्ट विवरण के लिए:

एक संदेश का जीवनकाल निर्धारित करना

FCM आमतौर पर संदेश भेजे जाने के तुरंत बाद डिलीवर करता है। हालाँकि, यह हमेशा संभव नहीं हो सकता है। उदाहरण के लिए, यदि प्लेटफ़ॉर्म Android है, तो डिवाइस को बंद, ऑफ़लाइन या अन्यथा अनुपलब्ध किया जा सकता है। या FCM किसी ऐप को अत्यधिक संसाधनों का उपभोग करने और बैटरी जीवन को नकारात्मक रूप से प्रभावित करने से रोकने के लिए जानबूझकर संदेशों में देरी कर सकता है।

जब ऐसा होता है, तो FCM संदेश को संग्रहीत करता है और इसे यथासंभव शीघ्रता से वितरित करता है। हालांकि ज्यादातर मामलों में यह ठीक है, लेकिन कुछ ऐप ऐसे भी हैं जिनके लिए देर से संदेश कभी भी डिलीवर नहीं किया जा सकता है। उदाहरण के लिए, यदि संदेश एक इनकमिंग कॉल या वीडियो चैट सूचना है, तो यह कॉल समाप्त होने से पहले केवल थोड़े समय के लिए सार्थक है। या यदि संदेश किसी ईवेंट के लिए आमंत्रण है, तो ईवेंट समाप्त होने के बाद प्राप्त होने पर यह बेकार है।

Android और वेब/जावास्क्रिप्ट पर, आप किसी संदेश की अधिकतम आयु निर्दिष्ट कर सकते हैं। मान 0 से 2,419,200 सेकंड (28 दिन) तक की अवधि का होना चाहिए, और यह उस अधिकतम अवधि से मेल खाती है जिसके लिए FCM संदेश को संग्रहीत और वितरित करने का प्रयास करता है। जिन अनुरोधों में यह फ़ील्ड शामिल नहीं है, वे डिफ़ॉल्ट रूप से अधिकतम चार सप्ताह की अवधि के लिए होते हैं।

इस सुविधा के कुछ संभावित उपयोग यहां दिए गए हैं:

  • वीडियो चैट इनकमिंग कॉल
  • आमंत्रण ईवेंट समाप्त हो रहे हैं
  • कैलेंडर इवेंट

किसी संदेश के जीवनकाल को निर्दिष्ट करने का एक अन्य लाभ यह है कि FCM कभी भी 0 सेकंड के समय-से-लाइव मान वाले संदेशों को थ्रॉटल नहीं करता है। दूसरे शब्दों में, FCM उन संदेशों के लिए सर्वोत्तम प्रयास की गारंटी देता है जिन्हें "अभी या कभी नहीं" वितरित किया जाना चाहिए। ध्यान रखें कि एक time_to_live कि तुरंत वितरित नहीं किया जा सकता 0 का अर्थ संदेशों के मूल्य निकाल दिया जाता है। हालाँकि, क्योंकि ऐसे संदेश कभी संग्रहीत नहीं होते हैं, यह सूचना संदेश भेजने के लिए सर्वोत्तम विलंबता प्रदान करता है।

यहां एक अनुरोध का उदाहरण दिया गया है जिसमें TTL शामिल है:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

एकाधिक प्रेषकों से संदेश प्राप्त करना

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

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

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

अंत में, संबंधित प्रेषकों के साथ पंजीकरण टोकन साझा करें, और वे अपनी स्वयं की प्रमाणीकरण कुंजियों का उपयोग करके क्लाइंट ऐप को संदेश भेजने में सक्षम होंगे।

ध्यान दें कि 100 एकाधिक प्रेषकों की सीमा है।

एक संदेश का जीवनकाल

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

सबसे अच्छी स्थिति में, यदि डिवाइस FCM से जुड़ा है, तो स्क्रीन चालू है और कोई थ्रॉटलिंग प्रतिबंध नहीं हैं, संदेश तुरंत वितरित किया जाता है।

यदि डिवाइस कनेक्ट है लेकिन डोज़ में, डिवाइस के डोज़ से बाहर होने तक कम प्राथमिकता वाला संदेश FCM द्वारा संग्रहीत किया जाता है। और यहीं है collapse_key झंडा एक भूमिका निभाता है: अगर वहाँ पहले से ही उसी संक्षिप्त कुंजी (और पंजीकरण टोकन) संग्रहीत और वितरण के लिए इंतज़ार कर के साथ एक संदेश है, पुराने संदेश छोड़ दिया है और नया संदेश अपनी जगह (जो है, वर्ष लग जाते हैं संदेश नए द्वारा संक्षिप्त किया गया है)। हालाँकि, यदि संक्षिप्त कुंजी सेट नहीं है, तो नए और पुराने दोनों संदेशों को भविष्य में वितरण के लिए संग्रहीत किया जाता है।

यदि डिवाइस FCM से कनेक्टेड नहीं है, तो कनेक्शन स्थापित होने तक संदेश संग्रहीत किया जाता है (फिर से पतन कुंजी नियमों का सम्मान करते हुए)। जब कोई कनेक्शन स्थापित हो जाता है, तो FCM डिवाइस पर सभी लंबित संदेशों को डिलीवर करता है। यदि डिवाइस फिर कभी कनेक्ट नहीं होता है (उदाहरण के लिए, यदि यह फ़ैक्टरी रीसेट था), तो संदेश अंततः समाप्त हो जाता है और FCM संग्रहण से हटा दिया जाता है। जब तक डिफ़ॉल्ट टाइमआउट, चार सप्ताह है time_to_live ध्वज सेट है।

संदेश के वितरण में अधिक जानकारी प्राप्त करने के लिए:

    Android या iOS पर संदेशों का वितरण में अधिक जानकारी प्राप्त करने के लिए, को देखने के FCM रिपोर्टिंग डैशबोर्ड , जो संदेशों की संख्या Android के लिए "इंप्रेशन" (सूचनाओं उपयोगकर्ताओं द्वारा देखा) के लिए भेजा है और iOS और Android डिवाइस पर खोला, डेटा के साथ रिकॉर्ड ऐप्स।

प्रत्यक्ष चैनल संदेश सेवा सक्षम Android उपकरणों के लिए, यदि डिवाइस एक महीने से अधिक समय से FCM से कनेक्ट नहीं है, तो FCM अभी भी संदेश को स्वीकार करता है, लेकिन तुरंत उसे छोड़ देता है। उपकरण आप इसे करने के लिए भेजा पिछले डेटा संदेश के चार सप्ताह के भीतर कनेक्ट होता है, अपने ग्राहक को मिलने वाले onDeletedMessages () कॉलबैक। ऐप तब स्थिति को ठीक से संभाल सकता है, आमतौर पर ऐप सर्वर से पूर्ण सिंक का अनुरोध करके।

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

थ्रॉटलिंग और स्केलिंग

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

बंधनेवाला संदेश थ्रॉटलिंग

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

उदाहरण के लिए, यदि आप एक ही उपकरण पर बड़ी संख्या में नए ईमेल समन्वयन अनुरोध भेजते हैं, तो हम अगले ईमेल समन्वयन अनुरोध में कुछ मिनट की देरी कर सकते हैं ताकि उपकरण कम औसत दर पर समन्वयित हो सके। उपयोगकर्ता द्वारा अनुभव किए गए बैटरी प्रभाव को सीमित करने के लिए यह थ्रॉटलिंग सख्ती से किया जाता है।

यदि आपके उपयोग के मामले में उच्च बर्स्ट भेजने के पैटर्न की आवश्यकता है, तो गैर-संक्षिप्त संदेश सही विकल्प हो सकते हैं। ऐसे संदेशों के लिए, बैटरी की लागत कम करने के लिए ऐसे संदेशों में सामग्री शामिल करना सुनिश्चित करें।

हम संक्षिप्त किए जा सकने वाले संदेशों को प्रति डिवाइस प्रति ऐप 20 संदेशों के फटने तक सीमित करते हैं, प्रत्येक 3 मिनट में 1 संदेश की रिफिल के साथ।

एक्सएमपीपी सर्वर थ्रॉटलिंग

हम उस दर को सीमित करते हैं जिसे आप FCM XMPP सर्वर से प्रति प्रोजेक्ट 400 कनेक्शन प्रति मिनट तक कनेक्ट कर सकते हैं। यह संदेश वितरण के लिए कोई समस्या नहीं होनी चाहिए, लेकिन यह हमारे सिस्टम की स्थिरता सुनिश्चित करने के लिए महत्वपूर्ण है।

प्रत्येक परियोजना के लिए, FCM समानांतर में 2500 कनेक्शन की अनुमति देता है।

एक डिवाइस के लिए अधिकतम संदेश दर

आप एक डिवाइस पर अधिकतम 240 संदेश/मिनट और 5,000 संदेश/घंटा भेज सकते हैं। यह उच्च सीमा यातायात के अल्पकालिक विस्फोट की अनुमति देने के लिए है, जैसे कि जब उपयोगकर्ता चैट पर तेजी से बातचीत कर रहे हों। यह सीमा किसी डिवाइस पर अनजाने में बैटरी खत्म होने से तर्क भेजने में त्रुटियों को रोकती है।

अपस्ट्रीम संदेश सीमा

हम सीमित कर नदी के ऊपर संदेशों परियोजना नदी के ऊपर गंतव्य सर्वर ओवरलोडिंग से बचने के लिए प्रति 1,500,000 / मिनट पर।

खराब ऐप व्यवहार से बैटरी खत्म होने से बचाने के लिए हम प्रति डिवाइस अपस्ट्रीम संदेशों को 1,000/मिनट पर सीमित करते हैं।

विषय संदेश सीमा

विषय सदस्यता जोड़ने/निकालने की दर प्रति प्रोजेक्ट 3,000 क्यूपीएस तक सीमित है।

संदेश भेजने दरों के लिए, देखें फैनआउट थ्रॉटलिंग

फैनआउट थ्रॉटलिंग

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

संदेश फैनआउट तात्कालिक नहीं है और इसलिए कभी-कभी आपके पास एक साथ कई प्रशंसक प्रगति पर होते हैं। हम प्रति प्रोजेक्ट समवर्ती संदेश प्रशंसकों की संख्या को 1,000 तक सीमित करते हैं। उसके बाद, हम अतिरिक्त फैनआउट अनुरोधों को अस्वीकार कर सकते हैं या अनुरोधों के फैनआउट को तब तक के लिए स्थगित कर सकते हैं जब तक कि पहले से चल रहे कुछ फैनआउट पूर्ण नहीं हो जाते।

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

FCM पोर्ट और आपका फ़ायरवॉल

यदि आपके संगठन के पास इंटरनेट पर या उससे आने वाले ट्रैफ़िक को प्रतिबंधित करने के लिए फ़ायरवॉल है, तो आपको मोबाइल डिवाइस को FCM से कनेक्ट करने की अनुमति देने के लिए इसे कॉन्फ़िगर करने की आवश्यकता है ताकि आपके नेटवर्क पर डिवाइस संदेश प्राप्त कर सकें। FCM आमतौर पर पोर्ट 5228 का उपयोग करता है, लेकिन यह कभी-कभी 443, 5229 और 5230 का उपयोग करता है।

आपके नेटवर्क से कनेक्ट होने वाले उपकरणों के लिए, FCM विशिष्ट IP प्रदान नहीं करता है क्योंकि हमारी IP श्रेणी बहुत बार बदलती है और आपके फ़ायरवॉल नियम पुराने हो सकते हैं, जो आपके उपयोगकर्ताओं के अनुभव को प्रभावित कर सकते हैं। आदर्श रूप से, अनुमति सूची पोर्ट 5228-5230 और 443 बिना किसी आईपी प्रतिबंध के। हालांकि, अगर आप एक आईपी प्रतिबंध होना आवश्यक है, तो आप में सूचीबद्ध आईपी पतों की सभी allowlist चाहिए goog.json । यह बड़ी सूची नियमित रूप से अपडेट की जाती है, और आपको मासिक आधार पर अपने नियमों को अपडेट करने की सलाह दी जाती है। फ़ायरवॉल आईपी प्रतिबंधों के कारण होने वाली समस्याएं अक्सर रुक-रुक कर होती हैं और निदान करना मुश्किल होता है।

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

खुलने वाले बंदरगाह:

  • 5228
  • ५२२९
  • 5230
  • 443

खोलने के लिए होस्टनाम:

  • mtalk.google.com
  • mtalk4.google.com
  • mtalk-staging.google.com
  • mtalk-dev.google.com
  • alt1-mtalk.google.com
  • alt2-mtalk.google.com
  • alt3-mtalk.google.com
  • alt4-mtalk.google.com
  • alt5-mtalk.google.com
  • alt6-mtalk.google.com
  • alt7-mtalk.google.com
  • alt8-mtalk.google.com
  • android.clients.google.com
  • device-provisioning.googleapis.com

नेटवर्क एड्रेस ट्रांसलेशन और/या स्टेटफुल पैकेट इंस्पेक्शन फायरवॉल:

यदि आपका नेटवर्क नेटवर्क एड्रेस ट्रांसलेशन (NAT) या स्टेटफुल पैकेट इंस्पेक्शन (SPI) लागू करता है, तो पोर्ट्स 5228-5230 पर हमारे कनेक्शन के लिए 30 मिनट या उससे अधिक का टाइमआउट लागू करें। यह हमें आपके उपयोगकर्ताओं के मोबाइल उपकरणों की बैटरी खपत को कम करते हुए विश्वसनीय कनेक्टिविटी प्रदान करने में सक्षम बनाता है।

साख

आपके द्वारा कार्यान्वित की जाने वाली FCM सुविधाओं के आधार पर, आपको अपने Firebase प्रोजेक्ट से निम्नलिखित क्रेडेंशियल की आवश्यकता हो सकती है:

परियोजना आईडी आपके Firebase प्रोजेक्ट के लिए एक विशिष्ट पहचानकर्ता, जिसका उपयोग FCM v1 HTTP एंडपॉइंट के अनुरोधों में किया जाता है। यह मान में उपलब्ध है Firebase कंसोल सेटिंग्स फलक।
पंजीकरण टोकन

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

प्रेषक आईडी एक अद्वितीय संख्यात्मक मूल्य बनाई गई है जब आप अपने Firebase परियोजना, में उपलब्ध बनाने क्लाउड संदेश Firebase कंसोल सेटिंग्स फलक के टैब। प्रेषक आईडी का उपयोग प्रत्येक प्रेषक की पहचान करने के लिए किया जाता है जो क्लाइंट ऐप को संदेश भेज सकता है।
एक्सेस टोकन एक अल्पकालिक OAuth 2.0 टोकन जो HTTP v1 API के अनुरोधों को अधिकृत करता है। यह टोकन एक सेवा खाते से जुड़ा है जो आपके फायरबेस प्रोजेक्ट से संबंधित है। टोकन बना सकते हैं और घुमाने के लिए उपयोग करने के लिए, चरणों में वर्णित का पालन अधिकृत संदेश अनुरोध
सर्वर कुंजी (विरासत प्रोटोकॉल के लिए)

एक सर्वर कुंजी जो आपके ऐप सर्वर को Google सेवाओं तक पहुंच के लिए अधिकृत करती है, जिसमें फायरबेस क्लाउड मैसेजिंग लीगेसी प्रोटोकॉल के माध्यम से संदेश भेजना शामिल है। जब आप अपना फायरबेस प्रोजेक्ट बनाते हैं तो आपको सर्वर कुंजी प्राप्त होती है। आप में देख सकते हैं क्लाउड संदेश Firebase कंसोल सेटिंग्स फलक के टैब।

महत्वपूर्ण: क्या आपके ग्राहक कोड में सर्वर कुंजी कहीं भी शामिल नहीं। साथ ही, अपने ऐप सर्वर को अधिकृत करने के लिए केवल सर्वर कुंजियों का उपयोग करना सुनिश्चित करें। Android, iOS और ब्राउज़र कुंजियाँ FCM द्वारा अस्वीकार कर दी जाती हैं।