FCM आपको तीन तरह के टूल उपलब्ध कराता है, ताकि आपको मैसेज डिलीवरी के बारे में अहम जानकारी मिल सके:
- Firebase कंसोल मैसेज की डिलीवरी रिपोर्ट
- Firebase Cloud Messaging Data API से मिली, Android SDK टूल की डिलीवरी की एग्रीगेट की गई मेट्रिक
- Google BigQuery में डेटा एक्सपोर्ट करने की सुविधा
इस पेज पर बताए गए शिकायत करने के लिए इस्तेमाल होने वाले सभी टूल के काम करने के लिए, Google Analytics की ज़रूरत होती है. अगर आपके प्रोजेक्ट के लिए Google Analytics चालू नहीं है, तो Firebase प्रोजेक्ट की सेटिंग के इंटिग्रेशन टैब में जाकर, इसे सेट अप किया जा सकता है.
ध्यान रखें कि इस पेज पर मौजूद कई आंकड़ों की रिपोर्टिंग, आंकड़ों के डेटा को एक साथ इकट्ठा करने की वजह से, 24 घंटे तक देर से दिख सकती है.
मैसेज की डिलीवरी की रिपोर्ट
Firebase कंसोल में रिपोर्ट टैब में, Android या Apple प्लैटफ़ॉर्म FCM SDK टूल को भेजे गए मैसेज का डेटा देखा जा सकता है. इसमें नोटिफ़िकेशन कंपोज़र और FCM API (एपीआई) के ज़रिए भेजे गए मैसेज भी शामिल हैं:
- भेजा गया — डेटा मैसेज या सूचना मैसेज को डिलीवरी के लिए सूची में डाल दिया गया है या डिलीवरी के लिए, एपीएन जैसी तीसरे पक्ष की सेवा को भेज दिया गया है. ज़्यादा जानकारी के लिए, मैसेज का लाइफ़टाइम देखें.
- मिला (सिर्फ़ Android डिवाइसों पर उपलब्ध) — ऐप्लिकेशन को डेटा मैसेज या सूचना वाला मैसेज मिला है. यह डेटा, उस Android डिवाइस में उपलब्ध है जिसमें FCM SDK 18.0.1 या इसके बाद का वर्शन इंस्टॉल है.
- इंप्रेशन (सिर्फ़ Android डिवाइसों पर सूचना मैसेज के लिए उपलब्ध है) — ऐप्लिकेशन के बैकग्राउंड में चलने के दौरान, डिसप्ले सूचना डिवाइस पर दिखाई गई है.
- खुलता है — उपयोगकर्ता ने सूचना का मैसेज खोला. ऐप्लिकेशन के बैकग्राउंड में चलने पर ही मिलने वाली सूचनाओं के लिए रिपोर्ट की जाती है.
यह डेटा, सूचना वाले पेलोड वाले सभी मैसेज और लेबल किए गए सभी डेटा मैसेज के लिए उपलब्ध है. लेबल के बारे में ज़्यादा जानने के लिए, मैसेज में आंकड़े वाले लेबल जोड़ना लेख पढ़ें.
मैसेज की रिपोर्ट देखते समय, दिखाए गए डेटा के लिए तारीख की सीमा सेट की जा सकती है. साथ ही, CSV में डेटा एक्सपोर्ट करने का विकल्प भी चुना जा सकता है. इन शर्तों के हिसाब से भी फ़िल्टर किया जा सकता है:
- प्लैटफ़ॉर्म (iOS या Android)
- ऐप्लिकेशन
- कस्टम आंकड़े लेबल
मैसेज में आंकड़ों के लेबल जोड़ना
मैसेज को लेबल करना, कस्टम विश्लेषण के लिए बहुत काम का होता है. इसकी मदद से, डिलीवरी के आंकड़ों को लेबल या लेबल के सेट के हिसाब से फ़िल्टर किया जा सकता है. आप एचटीटीपी v1 एपीआई के ज़रिए भेजे गए किसी भी मैसेज पर लेबल जोड़ सकते हैं. ऐसा करने के लिए, मैसेज ऑब्जेक्ट में fcmOptions.analyticsLabel
फ़ील्ड को सेट करें. इसके अलावा, खास प्लैटफ़ॉर्म के लिए बने AndroidFcmOptions
या ApnsFcmOptions
फ़ील्ड में भी लेबल जोड़ा जा सकता है.
Analytics लेबल, ^[a-zA-Z0-9-_.~%]{1,50}$
फ़ॉर्मैट में मौजूद टेक्स्ट स्ट्रिंग होते हैं.
लेबल में लोअर और अपर केस के अक्षर, नंबर, और ये सिंबल शामिल हो सकते हैं:
-
~
%
इसमें 50 से ज़्यादा वर्ण नहीं होने चाहिए. हर दिन 100 यूनीक लेबल जोड़े जा सकते हैं. इस सीमा से ज़्यादा लेबल जोड़े जाने पर, उन मैसेज की रिपोर्ट नहीं की जाती है.
Firebaseकंसोल मैसेजिंग रिपोर्ट टैब में, सभी मौजूदा लेबल की सूची खोजी जा सकती है. साथ ही, दिखाए गए आंकड़ों को फ़िल्टर करने के लिए, उन्हें एक-एक करके या एक साथ लागू किया जा सकता है.
FCM Data API के ज़रिए इकट्ठा किया गया डिलीवरी का डेटा
'Firebase क्लाउड से मैसेज करने का डेटा एपीआई' आपको जानकारी वापस पाने की सुविधा देता है. इससे Android ऐप्लिकेशन को टारगेट करने वाले मैसेज के अनुरोधों के नतीजों को समझने में मदद मिलती है. यह एपीआई किसी प्रोजेक्ट में, डेटा इकट्ठा करने की सुविधा वाले सभी Android डिवाइसों का एग्रीगेट किया गया डेटा उपलब्ध कराता है. इसमें, बिना किसी देरी के डिलीवर किए गए मैसेज के प्रतिशत की जानकारी के साथ-साथ, Android ट्रांसपोर्ट लेयर में कितने मैसेज देर से डिलीवर हुए या ड्रॉप हुए, इसकी जानकारी भी शामिल होती है. इस डेटा का आकलन करने से, मैसेज डिलीवरी के बड़े रुझानों का पता चल सकता है. साथ ही, आपको मैसेज भेजने के अनुरोधों की परफ़ॉर्मेंस को बेहतर बनाने के असरदार तरीके खोजने में मदद मिल सकती है. रिपोर्ट में, तारीख की सीमा की उपलब्धता के बारे में जानकारी पाने के लिए, एग्रीगेट डेटा टाइमलाइन देखें.
एपीआई, किसी ऐप्लिकेशन के लिए उपलब्ध सारा डेटा उपलब्ध कराता है. एपीआई का रेफ़रंस दस्तावेज़ देखें.
डेटा को किस तरह बांटा जाता है?
डिलीवरी डेटा को ऐप्लिकेशन, तारीख, और Analytics लेबल के हिसाब से बांटा जाता है.
एपीआई को कॉल करने पर, तारीख, ऐप्लिकेशन, और आंकड़ों के लेबल के हर कॉम्बिनेशन के लिए डेटा दिखेगा. उदाहरण के लिए, 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% नहीं होगा.
स्वीकार किए गए मैसेज की संख्या
डेटासेट में सिर्फ़ उन मैसेज की संख्या शामिल है जिन्हें FCM ने Android डिवाइस पर डिलीवरी के लिए स्वीकार किया था. सभी प्रतिशत, इस वैल्यू का इस्तेमाल हर numerator के तौर पर करते हैं. ध्यान रखें कि इस संख्या में उन उपयोगकर्ताओं के लिए टारगेट किए गए मैसेज शामिल नहीं होंगे जिन्होंने अपने डिवाइसों पर, इस्तेमाल और गड़बड़ी की जानकारी इकट्ठा करने की सुविधा बंद कर दी है.
मैसेज के नतीजे का प्रतिशत
MessageOutcomePercents
ऑब्जेक्ट में शामिल फ़ील्ड, मैसेज के अनुरोधों के नतीजों के बारे में जानकारी देते हैं. ये सभी कैटगरी अलग-अलग होती हैं. इससे, "क्या मेरे मैसेज डिलीवर हो रहे हैं?" और "मैसेज डिलीवर न होने की वजह क्या है?" जैसे सवालों के जवाब मिल सकते हैं.
उदाहरण के लिए, droppedTooManyPendingMessages
फ़ील्ड की ज़्यादा वैल्यू से यह पता चल सकता है कि ऐप्लिकेशन के इंस्टेंस को छोटे नहीं किए जा सकने वाले मैसेज की संख्या ज़्यादा मिल रही है. यह संख्या, FCM के 100 से ज़्यादा मैसेज को स्वीकार करने के लिए तय नहीं की गई है.
इस समस्या को कम करने के लिए, पक्का करें कि आपका ऐप्लिकेशन onDeletedMessages
पर आने वाले कॉल को मैनेज करता हो. साथ ही, छोटा किया जा सकने वाले मैसेज भेजने पर विचार करें. इसी तरह, droppedDeviceInactive
के लिए ज़्यादा प्रतिशत, आपके सर्वर पर रजिस्ट्रेशन टोकन अपडेट करने का सिग्नल हो सकता है. साथ ही, पुराने टोकन हटाने और विषयों की सदस्यता छोड़ने का संकेत हो सकता है. इस इलाके में सबसे सही तरीके जानने के लिए, FCM रजिस्ट्रेशन टोकन मैनेज करना देखें.
डिलीवरी की परफ़ॉर्मेंस का प्रतिशत
DeliveryPerformancePercents
ऑब्जेक्ट के फ़ील्ड में, उन मैसेज की जानकारी मिलती है जो डिलीवर हो गए हैं. यह "क्या मेरे मैसेज में देरी हो रही थी?" और "मैसेज में देरी क्यों हो रही है?" जैसे सवालों के जवाब मिल सकते हैं. उदाहरण के लिए, delayedMessageThrottled
की ज़्यादा वैल्यू से साफ़ तौर पर पता चलता है कि आपने हर डिवाइस के लिए तय की गई ज़्यादा से ज़्यादा सीमा को पार कर लिया है. साथ ही, आपको मैसेज भेजने की दर में बदलाव करना चाहिए.
मैसेज की अहम जानकारी के प्रतिशत
यह ऑब्जेक्ट, भेजे गए सभी मैसेज के बारे में ज़्यादा जानकारी देता है. priorityLowered
फ़ील्ड स्वीकार किए गए उन मैसेज का प्रतिशत दिखाता है जिनकी प्राथमिकता को HIGH
से घटाकर NORMAL
कर दिया गया था. अगर यह वैल्यू ज़्यादा है, तो ज़्यादा प्राथमिकता वाले कम मैसेज भेजें या पक्का करें कि ज़्यादा प्राथमिकता वाला मैसेज भेजने पर, आपको हमेशा सूचना दिखे. ज़्यादा जानकारी के लिए, मैसेज की प्राथमिकता से जुड़े हमारे दस्तावेज़ देखें
यह डेटा, BigQuery में एक्सपोर्ट किए गए डेटा से कैसे अलग है?
BigQuery Export में, FCM बैकएंड की मदद से मैसेज स्वीकार किए जाने और डिवाइस पर SDK टूल में मैसेज डिलीवरी के बारे में अलग-अलग मैसेज लॉग मिलते हैं (FCM आर्किटेक्चर के दूसरे और चौथे चरण). इस डेटा की मदद से, यह पक्का किया जा सकता है कि अलग-अलग मैसेज स्वीकार किए गए हों और उन्हें डिलीवर किया गया हो. अगले सेक्शन में BigQuery डेटा एक्सपोर्ट के बारे में ज़्यादा पढ़ें.
इसके उलट, Firebase Cloud Messaging Data API, Android ट्रांसपोर्ट लेयर (या FCM आर्किटेक्चर के तीसरे चरण) में होने वाली गतिविधियों के बारे में इकट्ठा की गई जानकारी देता है. इस डेटा से, FCM बैकएंड से Android SDK टूल पर मैसेज डिलीवर करने के बारे में अहम जानकारी मिलती है. यह खास तौर पर उन रुझानों को दिखाने के लिए मददगार होता है जिनसे पता चलता है कि इस ट्रांसपोर्ट के दौरान मैसेज में देरी क्यों हुई या क्यों नहीं हुई.
कुछ मामलों में, ऐसा हो सकता है कि दोनों डेटा सेट पूरी तरह से मेल न खाएं. ऐसा इन वजहों से हो सकता है:
- एग्रीगेट की गई मेट्रिक, सभी मैसेज का सिर्फ़ एक हिस्सा दिखाती हैं
- एग्रीगेट की गई मेट्रिक को राउंड ऑफ़ किया जाता है
- हम निजता थ्रेशोल्ड से नीचे की मेट्रिक नहीं दिखाते
- ज़्यादा ट्रैफ़िक को मैनेज करने के तरीके को ऑप्टिमाइज़ करने की वजह से, मैसेज के नतीजों का कुछ हिस्सा मौजूद नहीं है.
एपीआई की सीमाएं
एग्रीगेट किए गए डेटा की टाइमलाइन
एपीआई, सात दिनों का पुराना डेटा दिखाएगा. हालांकि, इस एपीआई से लौटाए गए डेटा को प्रोसेस करने में पांच दिन तक की देरी होगी. उदाहरण के लिए, 20 जनवरी को 9 जनवरी से 15 जनवरी तक का डेटा उपलब्ध होगा, लेकिन 16 जनवरी या उसके बाद का डेटा उपलब्ध नहीं होगा. इसके अलावा, डेटा को सबसे सही तरीके से उपलब्ध कराया जाता है. डेटा के उपलब्ध न होने की स्थिति में, FCM आगे की समस्या को ठीक करने की कोशिश करेगा. समस्या ठीक होने के बाद, वह डेटा को बैकफ़िल नहीं करेगा. लंबे समय तक रुकावट होने पर, डेटा एक हफ़्ते या उससे ज़्यादा समय तक उपलब्ध नहीं हो सकता.
डेटा कवरेज
Firebase Cloud Messaging Data API की दी गई मेट्रिक का मकसद, मैसेज डिलीवरी के बड़े रुझानों के बारे में अहम जानकारी देना है. हालांकि, ये सभी मैसेज के मामलों में 100% कवरेज नहीं देते. इन स्थितियों में, मेट्रिक में ऐसे नतीजे नहीं दिखते हैं जिनके बारे में पहले से जानकारी है.
समयसीमा खत्म हो चुके मैसेज
अगर लाइव रहने का समय (TTL), लॉग की गई तारीख के बाद खत्म हो जाता है, तो इस तारीख को मैसेज को droppedTtlExpired
के तौर पर नहीं गिना जाएगा.
बंद डिवाइसों पर मैसेज भेजना
बंद डिवाइसों पर भेजे गए मैसेज, डेटासेट में दिख सकते हैं या नहीं. यह इस बात पर निर्भर करता है कि वे किस डेटा पाथ का इस्तेमाल करते हैं. इससे droppedDeviceInactive
और pending
फ़ील्ड में गिनती गलत हो सकती है.
उपयोगकर्ता की कुछ खास प्राथमिकताओं वाले डिवाइसों पर मैसेज भेजना
जिन उपयोगकर्ताओं ने अपने डिवाइसों पर, इस्तेमाल और गड़बड़ी की जानकारी इकट्ठा करने की सेटिंग बंद की है उनकी प्राथमिकताओं के मुताबिक, उनके मैसेज की गिनती में शामिल नहीं किया जाएगा.
राउंड ऑफ़ और कम से कम वैल्यू
FCM, जहां डेटा की संख्या काफ़ी नहीं होती वहां डेटा को राउंड ऑफ़ कर देता है और उसे गिनती में शामिल नहीं करता.
BigQuery डेटा एक्सपोर्ट
ज़्यादा विश्लेषण के लिए, अपने मैसेज का डेटा BigQuery में एक्सपोर्ट किया जा सकता है. BigQuery की मदद से, BigQuery SQL का इस्तेमाल करके डेटा का विश्लेषण किया जा सकता है. साथ ही, डेटा को किसी दूसरे क्लाउड सेवा देने वाली कंपनी के पास एक्सपोर्ट किया जा सकता है या अपने कस्टम एमएल मॉडल के लिए डेटा का इस्तेमाल किया जा सकता है. BigQuery में एक्सपोर्ट में, मैसेज के लिए उपलब्ध सारा डेटा शामिल होता है. इस बात से कोई फ़र्क़ नहीं पड़ता कि मैसेज किस तरह का है या उसे एपीआई या सूचना लिखने वाले टूल से भेजा गया है या नहीं.
FCM SDK टूल के इन कम से कम वर्शन वाले डिवाइसों पर भेजे गए मैसेज के लिए, आपके पास अपने ऐप्लिकेशन के लिए मैसेज डिलीवरी डेटा को एक्सपोर्ट करने की सुविधा चालू करने का विकल्प होता है:
- Android 20.1.0 या इसके बाद का वर्शन.
- iOS 8.6.0 या इसके बाद का वर्शन
- Firebase Web SDK टूल 9.0.0 या इसके बाद का वर्शन
Android और iOS के लिए डेटा एक्सपोर्ट करने की सुविधा चालू करने के बारे में जानकारी यहां देखें.
शुरू करने के लिए, अपने प्रोजेक्ट को BigQuery से लिंक करें:
नीचे से कोई एक विकल्प चुनें:
सूचनाएं कंपोज़र खोलें. इसके बाद, पेज पर सबसे नीचे मौजूद BigQuery ऐक्सेस करें पर क्लिक करें.
Firebase कंसोल में, इंटिग्रेशन पेज पर जाकर, BigQuery कार्ड में लिंक करें पर क्लिक करें.
इस पेज पर, प्रोजेक्ट में FCM के साथ काम करने वाले सभी ऐप्लिकेशन के लिए, FCM एक्सपोर्ट करने के विकल्प दिखाए गए हैं.
BigQuery को चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.
ज़्यादा जानकारी के लिए, Firebase को BigQuery से लिंक करना लेख पढ़ें.
अगर आपने Cloud Messaging के लिए, BigQuery को एक्सपोर्ट करने की सुविधा चालू की है, तो:
Firebase, BigQuery में आपके डेटा को एक्सपोर्ट करता है. ध्यान दें कि एक्सपोर्ट के लिए डेटा का शुरुआती प्रॉपेगेशन पूरा होने में 48 घंटे लग सकते हैं.
- पिछले 30 दिनों तक के डेटा के लिए, डेटा बैकफ़िल को मैन्युअल तरीके से शेड्यूल किया जा सकता है.
डेटासेट बनाने के बाद, उसकी जगह को बदला नहीं जा सकता. हालांकि, डेटासेट को किसी दूसरी जगह पर कॉपी किया जा सकता है या मैन्युअल तरीके से डेटासेट को किसी दूसरी जगह पर ले जाया (फिर से बनाया) जा सकता है. ज़्यादा जानने के लिए, डेटासेट की जगह बदलना लेख पढ़ें.
Firebase, आपके Firebase प्रोजेक्ट से BigQuery पर डेटा के नियमित सिंक को सेट अप करता है. हर दिन होने वाले ये एक्सपोर्ट ऑपरेशन, पैसिफ़िक टाइम के मुताबिक सुबह 4 बजे शुरू होते हैं और आम तौर पर 24 घंटे में पूरे हो जाते हैं.
आपके प्रोजेक्ट के सभी ऐप्लिकेशन डिफ़ॉल्ट रूप से, BigQuery से लिंक होते हैं. साथ ही, बाद में प्रोजेक्ट में जोड़े जाने वाले ऐप्लिकेशन भी अपने-आप BigQuery से लिंक कर दिए जाते हैं. आपके पास BigQuery में डेटा भेजने वाले ऐप्लिकेशन चुनने का विकल्प होता है.
BigQuery एक्सपोर्ट की सुविधा बंद करने के लिए, Firebase कंसोल में जाकर, अपने प्रोजेक्ट को अनलिंक करें.
मैसेज डिलीवरी का डेटा एक्सपोर्ट करने की सुविधा चालू करना
FCM SDK 8.6.0 या इसके बाद के वर्शन वाले iOS डिवाइसों पर, ऐप्लिकेशन के मैसेज डिलीवरी डेटा को एक्सपोर्ट करने की सुविधा चालू की जा सकती है. FCM सूचना और बैकग्राउंड, दोनों तरह की सूचनाओं के लिए डेटा एक्सपोर्ट करने की सुविधा देता है. इन विकल्पों को चालू करने से पहले, आपको अपने प्रोजेक्ट के लिए FCM-BigQuery लिंक बनाना होगा. इसके बारे में BigQuery डेटा एक्सपोर्ट में बताया गया है.
सूचनाओं के लिए डिलीवरी डेटा एक्सपोर्ट करने की सुविधा चालू करना
सूचना सेवा ऐप्लिकेशन के एक्सटेंशन सिर्फ़ सूचनाएं भेजने की सुविधा से ट्रिगर हो सकते हैं. इसलिए, आपको अपने ऐप्लिकेशन में सूचना सेवा एक्सटेंशन जोड़ना होगा. साथ ही, डिसप्ले मैसेज ट्रैकिंग की सुविधा चालू करने के लिए, सेवा एक्सटेंशन में इस एपीआई को कॉल करना होगा. डिलीवर की गई नई सूचनाओं में कॉन्टेंट में बदलाव करने के बारे में Apple का दस्तावेज़ देखें.
मिलने वाली हर सूचना के लिए, यह कॉल करना ज़रूरी है:
Swift
// 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)
}
}
Objective-C
// 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
अगर एचटीटीपी v1 API का इस्तेमाल करके, भेजने के अनुरोध बनाए जा रहे हैं, तो पेलोड ऑब्जेक्ट में mutable-content = 1
की जानकारी ज़रूर दें.
बैकग्राउंड में मिलने वाली सूचनाओं के लिए, डिलीवरी से जुड़ा डेटा एक्सपोर्ट करने की सुविधा चालू करें
ऐप्लिकेशन के फ़ोरग्राउंड या बैकग्राउंड में होने पर मिलने वाले बैकग्राउंड मैसेज के लिए, मुख्य ऐप्लिकेशन के डेटा मैसेज हैंडलर में डेटा एक्सपोर्ट एपीआई को कॉल किया जा सकता है. आपको मिलने वाली हर सूचना के लिए, यह कॉल करना ज़रूरी है:
Swift
// 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)
}
Objective-C
// 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 में कौनसा डेटा एक्सपोर्ट किया जाता है?
ध्यान दें कि पुराने टोकन या इनऐक्टिव रजिस्ट्रेशन को टारगेट करने से, इनमें से कुछ आंकड़ों में बढ़ोतरी हो सकती है.
एक्सपोर्ट की गई टेबल का स्कीमा यह है:
_PARTITIONTIME | TIMESTAMP | इस कॉलम में, उस दिन के शुरू होने का टाइमस्टैंप (यूटीसी में) होता है जिसमें डेटा लोड किया गया था. YYYYMMDD पार्टीशन के लिए, इस सूडो कॉलम में TIMESTAMP('YYYY-MM-DD') वैल्यू शामिल है. |
event_timestamp | TIMESTAMP | सर्वर से रिकॉर्ड किया गया इवेंट टाइमस्टैंप |
Project_number | पूर्णांक | प्रोजेक्ट नंबर से उस प्रोजेक्ट की पहचान होती है जिसने मैसेज भेजा है |
message_id | स्ट्रिंग | मैसेज आईडी से किसी मैसेज की पहचान की जाती है. ऐप्लिकेशन आईडी और टाइमस्टैंप से जनरेट किया गया मैसेज आईडी, कुछ मामलों में दुनिया भर में यूनीक नहीं हो सकता. |
instance_id | स्ट्रिंग | उस ऐप्लिकेशन का यूनीक आईडी जिसमें मैसेज भेजा गया है (अगर उपलब्ध हो). यह एक इंस्टेंस आईडी या Firebase इंस्टॉलेशन आईडी हो सकता है. |
message_type | स्ट्रिंग | मैसेज का टाइप. यह सूचना मैसेज या डेटा मैसेज हो सकता है. Topic का इस्तेमाल, किसी विषय या कैंपेन के लिए भेजे गए ओरिजनल मैसेज की पहचान करने के लिए किया जाता है. इसके बाद भेजे गए मैसेज, सूचना या डेटा मैसेज होते हैं. |
sdk_platform | स्ट्रिंग | ईमेल पाने वाले ऐप्लिकेशन का प्लैटफ़ॉर्म |
app_name | स्ट्रिंग | Android ऐप्लिकेशन के लिए पैकेज का नाम या iOS ऐप्लिकेशन के लिए बंडल आईडी |
छोटा करने की कुंजी | स्ट्रिंग | छोटा करने की सुविधा वाले बटन से, मैसेज के उस ग्रुप की पहचान होती है जिसे छोटा किया जा सकता है. जब कोई डिवाइस कनेक्ट नहीं होता है, तो डिलीवरी के लिए सिर्फ़ आखिरी मैसेज को पंक्ति में लगाया जाता है. इसमें, मैसेज को छोटा करने के लिए इस्तेमाल की गई कुंजी शामिल होती है |
प्राथमिकता | पूर्णांक | मैसेज की प्राथमिकता. मान्य वैल्यू "सामान्य" और "ज़्यादा" हैं. iOS पर, ये APNs की प्राथमिकताओं 5 और 10 से मेल खाते हैं |
टीटीएल | पूर्णांक | इस पैरामीटर से पता चलता है कि डिवाइस के ऑफ़लाइन होने पर, संदेश को FCM स्टोरेज में कितने समय (सेकंड में) तक रखा जाना चाहिए |
topic | स्ट्रिंग | उस विषय का नाम जिस पर मैसेज भेजा गया था (लागू होने पर) |
bulk_id | पूर्णांक | एक साथ कई मैसेज भेजने के लिए इस्तेमाल होने वाले आईडी से, मिलते-जुलते मैसेज के ग्रुप की पहचान की जाती है. जैसे, किसी खास विषय पर भेजे गए मैसेज |
इवेंट | स्ट्रिंग | इवेंट का टाइप.
वैल्यू इस तरह की हो सकती हैं:
|
analytics_label | स्ट्रिंग | 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;