संदेश वितरण को समझना

एफसीएम आपको संदेश वितरण में अंतर्दृष्टि प्राप्त करने में मदद करने के लिए टूल के तीन सेट प्रदान करता है:

  • फायरबेस कंसोल संदेश डिलीवरी रिपोर्ट
  • फायरबेस क्लाउड मैसेजिंग डेटा एपीआई से एकत्रित एंड्रॉइड एसडीके डिलीवरी मेट्रिक्स
  • Google BigQuery पर व्यापक डेटा निर्यात

इस पृष्ठ में वर्णित सभी रिपोर्टिंग टूल को कार्य करने के लिए Google Analytics की आवश्यकता होती है। यदि आपके प्रोजेक्ट के लिए Google Analytics सक्षम नहीं है, तो आप इसे अपने फायरबेस प्रोजेक्ट सेटिंग्स के एकीकरण टैब में सेट कर सकते हैं।

ध्यान रखें कि इस पेज पर मौजूद कई आंकड़ों की रिपोर्टिंग में एनालिटिक्स डेटा की बैचिंग के कारण 24 घंटे तक की देरी हो सकती है।

संदेश वितरण रिपोर्ट

फायरबेस कंसोल में रिपोर्ट टैब में, आप एंड्रॉइड या ऐप्पल प्लेटफ़ॉर्म एफसीएम एसडीके पर भेजे गए संदेशों के लिए निम्नलिखित डेटा देख सकते हैं, जिसमें नोटिफिकेशन कंपोजर और एफसीएम एपीआई के माध्यम से भेजे गए संदेश भी शामिल हैं:

  • भेजता है - डेटा संदेश या अधिसूचना संदेश को डिलीवरी के लिए कतारबद्ध किया गया है या डिलीवरी के लिए एपीएन जैसी तृतीय-पक्ष सेवा को सफलतापूर्वक भेज दिया गया है। अधिक जानकारी के लिए संदेश का जीवनकाल देखें।
  • प्राप्त (केवल एंड्रॉइड डिवाइस पर उपलब्ध) - डेटा संदेश या अधिसूचना संदेश ऐप द्वारा प्राप्त किया गया है। यह डेटा तब उपलब्ध होता है जब प्राप्त करने वाले एंड्रॉइड डिवाइस में FCM SDK 18.0.1 या उच्चतर इंस्टॉल हो।
  • इंप्रेशन (केवल एंड्रॉइड डिवाइस पर अधिसूचना संदेशों के लिए उपलब्ध) - डिस्प्ले अधिसूचना डिवाइस पर प्रदर्शित की गई है जबकि ऐप पृष्ठभूमि में है।
  • खुलता है - उपयोगकर्ता ने अधिसूचना संदेश खोला। केवल तब प्राप्त होने वाली सूचनाओं के लिए रिपोर्ट की जाती है जब ऐप पृष्ठभूमि में हो।

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

संदेश रिपोर्ट देखते समय, आप सीएसवी में निर्यात करने के विकल्प के साथ, प्रदर्शित डेटा के लिए एक तिथि सीमा निर्धारित कर सकते हैं। आप इन मानदंडों के आधार पर भी फ़िल्टर कर सकते हैं:

  • प्लेटफ़ॉर्म (आईओएस या एंड्रॉइड)
  • अनुप्रयोग
  • कस्टम एनालिटिक्स लेबल

संदेशों में एनालिटिक्स लेबल जोड़ना

कस्टम विश्लेषण के लिए संदेशों को लेबल करना बहुत उपयोगी है, जिससे आप लेबल या लेबल के सेट के आधार पर डिलीवरी आंकड़ों को फ़िल्टर कर सकते हैं। आप संदेश ऑब्जेक्ट में fcmOptions.analyticsLabel फ़ील्ड सेट करके, या प्लेटफ़ॉर्म-विशिष्ट AndroidFcmOptions या ApnsFcmOptions फ़ील्ड सेट करके HTTP v1 API के माध्यम से भेजे गए किसी भी संदेश में एक लेबल जोड़ सकते हैं।

एनालिटिक्स लेबल ^[a-zA-Z0-9-_.~%]{1,50}$ प्रारूप में टेक्स्ट स्ट्रिंग हैं। लेबल में छोटे और बड़े अक्षर, संख्याएँ और निम्नलिखित प्रतीक शामिल हो सकते हैं:

  • -
  • ~
  • %

अधिकतम लंबाई 50 अक्षर है. आप प्रति दिन अधिकतम 100 अद्वितीय लेबल निर्दिष्ट कर सकते हैं; उस सीमा से अधिक जोड़े गए लेबल वाले संदेशों की रिपोर्ट नहीं की जाती है।

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

एफसीएम डेटा एपीआई के माध्यम से एकत्रित वितरण डेटा

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

एपीआई किसी दिए गए एप्लिकेशन के लिए उपलब्ध सभी डेटा प्रदान करता है। एपीआई संदर्भ दस्तावेज़ देखें।

डेटा का विभाजन कैसे किया जाता है?

डिलीवरी डेटा को एप्लिकेशन, दिनांक और एनालिटिक्स लेबल के आधार पर विभाजित किया गया है। एपीआई पर कॉल दिनांक, एप्लिकेशन और एनालिटिक्स लेबल के प्रत्येक संयोजन के लिए डेटा लौटाएगा। उदाहरण के लिए, एक एकल androidDeliveryData JSON ऑब्जेक्ट इस तरह दिखेगा:

 {
  "appId": "1:23456789:android:a93a5mb1234efe56",
  "date": {
    "year": 2021,
    "month": 1,
    "day": 1
  },
  "analyticsLabel": "foo",
  "data": {
    "countMessagesAccepted": "314159",
    "messageOutcomePercents": {
      "delivered": 71,
      "pending": 15
    },
   "deliveryPerformancePercents": {
      "deliveredNoDelay": 45,
      "delayedDeviceOffline": 11
    }
  }

मेट्रिक्स की व्याख्या कैसे करें

डिलीवरी डेटा उन संदेशों के प्रतिशत को रेखांकित करता है जो निम्नलिखित प्रत्येक मीट्रिक में फिट होते हैं। यह संभव है कि एक ही संदेश अनेक मैट्रिक्स पर फिट बैठता हो। हम डेटा कैसे एकत्र करते हैं और मेट्रिक्स को एकत्र करने के विवरण के स्तर की सीमाओं के कारण, कुछ संदेश परिणाम मेट्रिक्स में बिल्कुल भी प्रदर्शित नहीं होते हैं, इसलिए नीचे दिए गए प्रतिशत का योग 100% नहीं होगा।

स्वीकृत संदेशों की गणना करें

डेटासेट में शामिल एकमात्र गिनती उन संदेशों की गिनती है जो एंड्रॉइड डिवाइसों पर डिलीवरी के लिए एफसीएम द्वारा स्वीकार किए गए थे। सभी प्रतिशत इस मान को हर के रूप में उपयोग करते हैं। ध्यान रखें कि इस गिनती में उन उपयोगकर्ताओं को लक्षित संदेश शामिल नहीं होंगे जिन्होंने अपने उपकरणों पर उपयोग और नैदानिक ​​जानकारी के संग्रह को अक्षम कर दिया है।

संदेश परिणाम प्रतिशत

MessageOutcomePercents ऑब्जेक्ट में शामिल फ़ील्ड संदेश अनुरोधों के परिणामों पर जानकारी प्रदान करते हैं। श्रेणियाँ सभी परस्पर अनन्य हैं। यह "क्या मेरे संदेश वितरित किए जा रहे हैं?" जैसे प्रश्नों का उत्तर दे सकता है। और "संदेशों को हटाए जाने का कारण क्या है?"

उदाहरण के लिए, droppedTooManyPendingMessages फ़ील्ड के लिए एक उच्च मान यह संकेत दे सकता है कि ऐप इंस्टेंसेस को FCM की 100 लंबित संदेशों की सीमा से अधिक गैर-बंधनेवाला संदेशों की मात्रा प्राप्त हो रही है। इसे कम करने के लिए, सुनिश्चित करें कि आपका ऐप onDeletedMessages पर कॉल को संभालता है, और संक्षिप्त संदेश भेजने पर विचार करें। इसी तरह, droppedDeviceInactive के लिए उच्च प्रतिशत आपके सर्वर पर पंजीकरण टोकन को अपडेट करने, पुराने टोकन को हटाने और उन्हें विषयों से अनसब्सक्राइब करने का संकेत हो सकता है। इस क्षेत्र में सर्वोत्तम प्रथाओं के लिए एफसीएम पंजीकरण टोकन प्रबंधित करें देखें।

डिलिवरी प्रदर्शन प्रतिशत

DeliveryPerformancePercents ऑब्जेक्ट में फ़ील्ड उन संदेशों के बारे में जानकारी प्रदान करते हैं जो सफलतापूर्वक वितरित किए गए थे। यह "क्या मेरे संदेशों में देरी हुई?" जैसे प्रश्नों का उत्तर दे सकता है। और "संदेश विलंबित क्यों हैं?" उदाहरण के लिए, delayedMessageThrottled के लिए एक उच्च मान स्पष्ट रूप से इंगित करेगा कि आप प्रति-डिवाइस अधिकतम सीमा को पार कर रहे हैं, और जिस दर पर आप संदेश भेज रहे हैं उसे समायोजित करना चाहिए।

संदेश अंतर्दृष्टि प्रतिशत

यह ऑब्जेक्ट भेजे गए सभी संदेशों के बारे में अतिरिक्त जानकारी प्रदान करता है। priorityLowered फ़ील्ड स्वीकृत संदेशों का प्रतिशत व्यक्त करता है जिनकी प्राथमिकता HIGH से घटाकर NORMAL दी गई थी। यदि यह मान अधिक है, तो कम उच्च प्राथमिकता वाले संदेश भेजने का प्रयास करें या सुनिश्चित करें कि उच्च प्राथमिकता वाला संदेश भेजे जाने पर आप हमेशा एक अधिसूचना प्रदर्शित करें। अधिक जानकारी के लिए संदेश प्राथमिकता पर हमारा दस्तावेज़ देखें

यह डेटा BigQuery पर निर्यात किए गए डेटा से किस प्रकार भिन्न है?

BigQuery निर्यात FCM बैकएंड द्वारा संदेश स्वीकृति और डिवाइस पर SDK में संदेश वितरण के बारे में व्यक्तिगत संदेश लॉग प्रदान करता है ( FCM आर्किटेक्चर के चरण 2 और 4)। यह डेटा यह सुनिश्चित करने के लिए उपयोगी है कि व्यक्तिगत संदेश स्वीकार किए गए और वितरित किए गए। अगले भाग में BigQuery डेटा निर्यात के बारे में और पढ़ें।

इसके विपरीत, फायरबेस क्लाउड मैसेजिंग डेटा एपीआई एंड्रॉइड ट्रांसपोर्ट लेयर (या एफसीएम आर्किटेक्चर के चरण 3) में विशेष रूप से क्या होता है, इसके बारे में समग्र विवरण प्रदान करता है। यह डेटा विशेष रूप से एफसीएम बैकएंड से एंड्रॉइड एसडीके तक संदेशों की डिलीवरी के बारे में जानकारी प्रदान करता है। यह रुझान दिखाने के लिए विशेष रूप से उपयोगी है कि इस परिवहन के दौरान संदेशों में देरी क्यों हुई या छोड़ दी गई।

कुछ मामलों में, यह संभव है कि निम्नलिखित कारणों से दोनों डेटा सेट सटीक रूप से मेल न खाएं:

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

एपीआई की सीमाएं

समग्र डेटा समयसीमा

एपीआई 7 दिनों का ऐतिहासिक डेटा लौटाएगा; हालाँकि, इस एपीआई द्वारा लौटाए गए डेटा में 5 दिन तक की देरी होगी। उदाहरण के लिए, 20 जनवरी को, 9 जनवरी - 15 जनवरी का डेटा उपलब्ध होगा, लेकिन 16 जनवरी या उसके बाद का डेटा उपलब्ध नहीं होगा। इसके अतिरिक्त, डेटा सर्वोत्तम प्रयास से प्रदान किया जाता है। डेटा आउटेज की स्थिति में, एफसीएम समस्या को ठीक करने के लिए आगे काम करेगा और समस्या ठीक होने के बाद डेटा को बैकफ़िल नहीं करेगा। बड़े आउटेज में, डेटा एक सप्ताह या उससे अधिक समय तक अनुपलब्ध हो सकता है।

डेटा कवरेज

फायरबेस क्लाउड मैसेजिंग डेटा एपीआई द्वारा प्रदान किए गए मेट्रिक्स संदेश वितरण के व्यापक रुझानों में अंतर्दृष्टि प्रदान करने के लिए हैं। हालाँकि, वे सभी संदेश परिदृश्यों का 100% कवरेज प्रदान नहीं करते हैं। निम्नलिखित परिदृश्य ज्ञात परिणाम हैं जो मेट्रिक्स में प्रतिबिंबित नहीं होते हैं।

संक्षिप्त संदेश

जो संदेश किसी अन्य संदेश द्वारा संक्षिप्त कर दिए गए हैं वे डेटासेट में दिखाई नहीं देते हैं।

निष्क्रिय उपकरणों के लिए संदेश

निष्क्रिय उपकरणों पर भेजे गए संदेश डेटासेट में दिखाई दे भी सकते हैं और नहीं भी, यह इस बात पर निर्भर करता है कि वे कौन सा डेटा पथ अपनाते हैं। इससे droppedDeviceInactive और pending फ़ील्ड में कुछ ग़लत गिनती हो सकती है।

कुछ उपयोगकर्ता प्राथमिकताओं वाले उपकरणों के लिए संदेश

जिन उपयोगकर्ताओं ने अपने उपकरणों पर उपयोग और नैदानिक ​​जानकारी के संग्रह को अक्षम कर दिया है, उनकी प्राथमिकताओं को ध्यान में रखते हुए, उनके संदेशों को हमारी गिनती में शामिल नहीं किया जाएगा।

पूर्णांकन और न्यूनतम

एफसीएम जानबूझकर राउंड करता है और उन गणनाओं को बाहर कर देता है जहां वॉल्यूम पर्याप्त बड़े नहीं हैं।

BigQuery डेटा निर्यात

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

निम्नलिखित एफसीएम एसडीके न्यूनतम संस्करणों वाले उपकरणों पर भेजे गए संदेशों के लिए, आपके पास अपने ऐप के लिए संदेश वितरण डेटा के निर्यात को सक्षम करने का अतिरिक्त विकल्प है:

  • एंड्रॉइड 20.1.0 या उच्चतर।
  • आईओएस 8.6.0 या उच्चतर
  • फायरबेस वेब एसडीके 9.0.0 या उच्चतर

Android और iOS के लिए डेटा निर्यात सक्षम करने के विवरण के लिए नीचे देखें।

आरंभ करने के लिए, अपने प्रोजेक्ट को BigQuery से लिंक करें:

  1. निम्नलिखित विकल्पों में से एक चुनें:

    • नोटिफिकेशन कंपोज़र खोलें, फिर पेज के नीचे एक्सेस BigQuery पर क्लिक करें।

    • फ़ायरबेस कंसोल में एकीकरण पृष्ठ से, BigQuery कार्ड में लिंक पर क्लिक करें।

      यह पृष्ठ प्रोजेक्ट में सभी FCM-सक्षम ऐप्स के लिए FCM निर्यात विकल्प प्रदर्शित करता है।

  2. BigQuery को सक्षम करने के लिए ऑन-स्क्रीन निर्देशों का पालन करें।

अधिक जानकारी के लिए Firebase को BigQuery से लिंक करें देखें।

जब आप क्लाउड मैसेजिंग के लिए BigQuery निर्यात सक्षम करते हैं:

  • Firebase आपके डेटा को BigQuery पर निर्यात करता है । ध्यान दें कि निर्यात के लिए डेटा के प्रारंभिक प्रसार को पूरा होने में 48 घंटे तक का समय लग सकता है।

  • डेटासेट बनने के बाद, स्थान नहीं बदला जा सकता है, लेकिन आप डेटासेट को किसी भिन्न स्थान पर कॉपी कर सकते हैं या मैन्युअल रूप से डेटासेट को किसी भिन्न स्थान पर ले जा सकते हैं (पुनः बना सकते हैं)। अधिक जानने के लिए, डेटासेट स्थान बदलें देखें।

  • Firebase आपके Firebase प्रोजेक्ट से BigQuery तक आपके डेटा का नियमित सिंक सेट करता है। ये दैनिक निर्यात कार्य प्रशांत समयानुसार सुबह 4:00 बजे शुरू होते हैं और आमतौर पर 24 घंटों में समाप्त हो जाते हैं।

  • डिफ़ॉल्ट रूप से, आपके प्रोजेक्ट के सभी ऐप्स BigQuery से लिंक होते हैं और जो भी ऐप्स आप बाद में प्रोजेक्ट में जोड़ते हैं वे स्वचालित रूप से BigQuery से लिंक हो जाते हैं। आप यह प्रबंधित कर सकते हैं कि कौन से ऐप्स डेटा भेजते हैं

BigQuery निर्यात को निष्क्रिय करने के लिए, अपने प्रोजेक्ट को फायरबेस कंसोल में अनलिंक करें

संदेश वितरण डेटा निर्यात सक्षम करें

FCM SDK 8.6.0 या उच्चतर वाले iOS डिवाइस अपने ऐप के संदेश वितरण डेटा निर्यात को सक्षम कर सकते हैं। एफसीएम अलर्ट और बैकग्राउंड नोटिफिकेशन दोनों के लिए डेटा निर्यात का समर्थन करता है। इन विकल्पों को सक्षम करने से पहले, आपको पहले अपने प्रोजेक्ट के लिए FCM-BiqQuery लिंक बनाना होगा जैसा कि BigQuery डेटा निर्यात में वर्णित है।

अलर्ट सूचनाओं के लिए डिलीवरी डेटा निर्यात सक्षम करें

क्योंकि केवल अलर्ट सूचनाएं ही अधिसूचना सेवा ऐप एक्सटेंशन को ट्रिगर कर सकती हैं, आपको अपने ऐप में एक अधिसूचना सेवा एक्सटेंशन जोड़ना होगा और डिस्प्ले संदेश ट्रैकिंग को सक्षम करने के लिए इस एपीआई को सेवा एक्सटेंशन के अंदर कॉल करना होगा। नई वितरित सूचनाओं में सामग्री को संशोधित करने पर Apple का दस्तावेज़ देखें।

प्राप्त प्रत्येक अधिसूचना के लिए निम्नलिखित कॉल की जानी चाहिए:

तीव्र

// For alert notifications, call the API inside the service extension:
class NotificationService: UNNotificationServiceExtension {
  override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
  Messaging.extensionHelper()
      .exportDeliveryMetricsToBigQuery(withMessageInfo:request.content.userInfo)
  }
}

उद्देश्य सी

// For alert notifications, call the API inside the service extension:
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
                   withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler {
  [[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:request.content.userInfo];
}
@end

यदि आप HTTP v1 API का उपयोग करके अनुरोध भेजने का निर्माण कर रहे हैं, तो पेलोड ऑब्जेक्ट में mutable-content = 1 निर्दिष्ट करना सुनिश्चित करें।

पृष्ठभूमि सूचनाओं के लिए डिलीवरी डेटा निर्यात सक्षम करें

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

तीव्र

// For background notifications, call the API inside the UIApplicationDelegate or NSApplicationDelegate method:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
  Messaging.extensionHelper().exportDeliveryMetricsToBigQuery(withMessageInfo:userInfo)
}

उद्देश्य सी

// For background notifications, call the API inside the UIApplicationDelegate or NSApplicationDelegate method:
@implementation AppDelegate
- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo
          fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
  [[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:userInfo];
}
@end

BigQuery पर कौन सा डेटा निर्यात किया जाता है?

ध्यान दें कि पुराने टोकन या निष्क्रिय पंजीकरण को लक्षित करने से इनमें से कुछ आँकड़े बढ़ सकते हैं।

निर्यातित तालिका की स्कीमा है:

_विभाजन का समय TIMESTAMP इस छद्म कॉलम में उस दिन की शुरुआत (यूटीसी में) के लिए एक टाइमस्टैम्प होता है जिसमें डेटा लोड किया गया था। YYYYMMDD विभाजन के लिए, इस छद्म स्तंभ में मान TIMESTAMP('YYYY-MM-DD') शामिल है।
इवेंट_टाइमस्टैम्प TIMESTAMP सर्वर द्वारा रिकॉर्ड किया गया इवेंट टाइमस्टैम्प
परियोजना क्रमांक पूर्णांक प्रोजेक्ट नंबर उस प्रोजेक्ट की पहचान करता है जिसने संदेश भेजा है
message_id डोरी संदेश आईडी एक संदेश की पहचान करती है. ऐप आईडी और टाइमस्टैम्प से उत्पन्न, संदेश आईडी, कुछ मामलों में, विश्व स्तर पर अद्वितीय नहीं हो सकती है।
उदाहरण_आईडी डोरी उस ऐप की विशिष्ट आईडी जिस पर संदेश भेजा गया है (उपलब्ध होने पर)। यह एक इंस्टेंस आईडी या फायरबेस इंस्टॉलेशन आईडी हो सकता है।
संदेश प्रकार डोरी संदेश का प्रकार. अधिसूचना संदेश या डेटा संदेश हो सकता है। विषय का उपयोग किसी विषय या अभियान भेजने के लिए मूल संदेश की पहचान करने के लिए किया जाता है; बाद के संदेश या तो एक अधिसूचना या डेटा संदेश हैं।
sdk_platform डोरी प्राप्तकर्ता ऐप का प्लेटफ़ॉर्म
एप्लिकेशन का नाम डोरी Android ऐप्स के लिए पैकेज नाम या iOS ऐप्स के लिए बंडल आईडी
पतन_कुंजी डोरी संक्षिप्त कुंजी संदेशों के एक समूह की पहचान करती है जिन्हें संक्षिप्त किया जा सकता है। जब कोई डिवाइस कनेक्ट नहीं होता है, तो अंतिम डिलीवरी के लिए केवल दी गई कोलैप्स कुंजी वाला अंतिम संदेश कतार में रखा जाता है
प्राथमिकता पूर्णांक संदेश की प्राथमिकता. मान्य मान "सामान्य" और "उच्च" हैं। iOS पर, ये APNs प्राथमिकताओं 5 और 10 के अनुरूप हैं
टीटीएल पूर्णांक यह पैरामीटर निर्दिष्ट करता है कि यदि डिवाइस ऑफ़लाइन है तो संदेश को कितनी देर तक (सेकंड में) FCM स्टोरेज में रखा जाना चाहिए
विषय डोरी उस विषय का नाम जिस पर संदेश भेजा गया था (जब लागू हो)
बल्क_आईडी पूर्णांक बल्क आईडी संबंधित संदेशों के एक समूह की पहचान करती है, जैसे किसी विषय पर कोई विशेष संदेश भेजना
आयोजन डोरी घटना का प्रकार. संभावित मान हैं:
  • MESSAGE_ACCEPTED: संदेश FCM सर्वर द्वारा प्राप्त किया गया था और अनुरोध मान्य है;
  • MESSAGE_DELIVERED: संदेश डिवाइस पर ऐप के FCM SDK पर डिलीवर कर दिया गया है। डिफ़ॉल्ट रूप से, यह फ़ील्ड प्रचारित नहीं है. सक्षम करने के लिए, setDeliveryMetricsExportToBigQuery(boolean) में दिए गए निर्देशों का पालन करें।
  • MISSING_REGISTRATIONS: पंजीकरण गुम होने के कारण अनुरोध अस्वीकार कर दिया गया था;
  • UNAUTHORIZED_REGISTRATION: संदेश अस्वीकार कर दिया गया क्योंकि प्रेषक पंजीकरण को भेजने के लिए अधिकृत नहीं है;
  • MESSAGE_RECEIVED_INTERNAL_ERROR: संदेश अनुरोध संसाधित करते समय एक अनिर्दिष्ट त्रुटि हुई;
  • MISMATCH_SENDER_ID: संदेश भेजने वाले प्रेषक आईडी और अंतिम बिंदु के लिए घोषित आईडी के बीच बेमेल होने के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया था;
  • QUOTA_EXCEEDED: अपर्याप्त कोटा के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया था;
  • INVALID_REGISTRATION: अमान्य पंजीकरण के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया था;
  • INVALID_PACKAGE_NAME: संदेश भेजने का अनुरोध अमान्य पैकेज नाम के कारण अस्वीकार कर दिया गया था;
  • INVALID_APNS_CREDENTIAL: अमान्य APNS प्रमाणपत्र के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया था;
  • INVALID_PARAMETERS: संदेश भेजने का अनुरोध अमान्य पैरामीटर के कारण अस्वीकार कर दिया गया था;
  • PAYLOAD_TOO_LARGE: सीमा से अधिक पेलोड होने के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया था;
  • प्रमाणीकरण_त्रुटि: प्रमाणीकरण त्रुटि के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया था (संदेश भेजने के लिए उपयोग की गई एपीआई कुंजी की जांच करें);
  • INVALID_TTL: अमान्य टीटीएल के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया था।
एनालिटिक्स_लेबल डोरी HTTP v1 API के साथ, संदेश भेजते समय एनालिटिक्स लेबल सेट किया जा सकता है, ताकि एनालिटिक्स उद्देश्यों के लिए संदेश को चिह्नित किया जा सके

आप निर्यात किए गए डेटा के साथ क्या कर सकते हैं?

निम्नलिखित अनुभाग उन क्वेरीज़ के उदाहरण प्रस्तुत करते हैं जिन्हें आप अपने निर्यातित FCM डेटा के विरुद्ध BigQuery में चला सकते हैं।

ऐप द्वारा भेजे गए संदेशों की गणना करें

SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
  _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
  AND event = 'MESSAGE_ACCEPTED'
  AND message_id != ''
GROUP BY 1;

संदेशों द्वारा लक्षित अद्वितीय ऐप इंस्टेंस की गणना करें

SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
  _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
  AND event = 'MESSAGE_ACCEPTED';

भेजे गए अधिसूचना संदेशों की गणना करें

SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
  _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
  AND event = 'MESSAGE_ACCEPTED'
  AND message_type = 'DISPLAY_NOTIFICATION';

भेजे गए डेटा संदेशों की गणना करें

SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
  _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
  AND event = 'MESSAGE_ACCEPTED'
  AND message_type = 'DATA_MESSAGE';

किसी विषय या अभियान पर भेजे गए संदेशों की गणना करें

SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
  _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
  AND event = 'MESSAGE_ACCEPTED'
  AND bulk_id = your bulk id AND message_id != '';

किसी विशेष विषय पर भेजे गए संदेश की घटनाओं को ट्रैक करने के लिए, इस क्वेरी को संशोधित करके AND message_id != '' AND message_id = <your message id>; .

किसी दिए गए विषय या अभियान के लिए फैनआउट अवधि की गणना करें

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

SELECT
  TIMESTAMP_DIFF(
    end_timestamp, start_timestamp, MILLISECOND
  ) AS fanout_duration_ms,
  end_timestamp,
  start_timestamp
FROM (
    SELECT MAX(event_timestamp) AS end_timestamp
    FROM `project ID.firebase_messaging.data`
    WHERE
      _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
      AND event = 'MESSAGE_ACCEPTED'
      AND bulk_id = your bulk id
  ) sent
  CROSS JOIN (
    SELECT event_timestamp AS start_timestamp
    FROM `project ID.firebase_messaging.data`
    WHERE
      _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
      AND event = 'MESSAGE_ACCEPTED'
      AND bulk_id = your bulk id
      AND message_type = 'TOPIC'
  ) initial_message;

वितरित संदेशों का प्रतिशत गिनें

SELECT
  messages_sent,
  messages_delivered,
  messages_delivered / messages_sent * 100 AS percent_delivered
FROM (
    SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent
    FROM `project ID.firebase_messaging.data`
    WHERE
      _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
      AND event = 'MESSAGE_ACCEPTED'
  ) sent
  CROSS JOIN (
    SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered
    FROM `project ID.firebase_messaging.data`
    WHERE
      _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
      AND (event = 'MESSAGE_DELIVERED'
      AND message_id
      IN (
        SELECT message_id FROM `project ID.firebase_messaging.data`
        WHERE
          _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
          AND event = 'MESSAGE_ACCEPTED'
        GROUP BY 1
      )
  ) delivered;

किसी दिए गए संदेश आईडी और इंस्टेंस आईडी के लिए सभी घटनाओं को ट्रैक करें

SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
    _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
    AND message_id = 'your message id'
    AND instance_id = 'your instance id'
ORDER BY event_timestamp;

किसी दिए गए संदेश आईडी और इंस्टेंस आईडी के लिए विलंबता की गणना करें

SELECT
  TIMESTAMP_DIFF(
    MAX(delivered_time), MIN(accepted_time), MILLISECOND
  ) AS latency_ms
FROM (
    SELECT event_timestamp AS accepted_time
    FROM `project ID.firebase_messaging.data`
    WHERE
      _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
      AND message_id = 'your message id'
      AND instance_id = 'your instance id'
      AND event = 'MESSAGE_ACCEPTED'
  ) sent
  CROSS JOIN (
    SELECT event_timestamp AS delivered_time
    FROM `project ID.firebase_messaging.data`
    WHERE
      _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND
      message_id = 'your message id' AND instance_id = 'your instance id'
      AND (event = 'MESSAGE_DELIVERED'
  ) delivered;