यदि आप प्रोग्रामेटिक रूप से प्रेषण अनुरोध बनाने के लिए FCM APIs का उपयोग करते हैं, तो आप पा सकते हैं कि समय के साथ, आप पुराने पंजीकरण टोकन वाले निष्क्रिय उपकरणों को संदेश भेजकर संसाधन बर्बाद कर रहे हैं। यह स्थिति Firebase कंसोल में रिपोर्ट किए गए संदेश वितरण डेटा या BigQuery को निर्यात किए गए डेटा को प्रभावित कर सकती है, जो डिलीवरी दरों में नाटकीय (लेकिन वास्तव में मान्य नहीं) गिरावट के रूप में दिखाई दे रही है। यह मार्गदर्शिका उन कुछ उपायों पर चर्चा करती है जिन्हें आप कुशल संदेश लक्ष्यीकरण और वैध वितरण रिपोर्टिंग सुनिश्चित करने में सहायता के लिए ले सकते हैं।
बुनियादी सर्वोत्तम अभ्यास
ऐसे किसी भी ऐप में कुछ मौलिक अभ्यास हैं जिनका पालन आपको प्रोग्रामेटिक रूप से अनुरोध भेजने के लिए FCM APIs का उपयोग करने वाले किसी भी ऐप में करना चाहिए। मुख्य सर्वोत्तम अभ्यास हैं:
- अपने सर्वर पर पंजीकरण टोकन स्टोर करें। सर्वर के लिए एक महत्वपूर्ण भूमिका प्रत्येक क्लाइंट के टोकन का ट्रैक रखना और सक्रिय टोकन की अद्यतन सूची रखना है। हम दृढ़ता से अनुशंसा करते हैं कि आप अपने कोड और अपने सर्वर में एक टोकन टाइमस्टैम्प लागू करें, और नियमित अंतराल पर इस टाइमस्टैम्प को अपडेट करें।
- पुराने हो चुके स्टोर टोकन को हटा दें । अमान्य टोकन प्रतिक्रियाओं के स्पष्ट मामलों में टोकन हटाने के अलावा, आपको संभवतः अन्य संकेतों की निगरानी करने की आवश्यकता होगी कि टोकन पुराना है। यह मार्गदर्शिका इसे प्राप्त करने के लिए आपके कुछ विकल्पों पर चर्चा करती है।
पंजीकरण टोकन प्राप्त करें और स्टोर करें
आपके ऐप के आरंभिक स्टार्टअप पर, FCM SDK क्लाइंट ऐप इंस्टेंस के लिए एक पंजीकरण टोकन बनाता है। यह टोकन है जिसे आपको एपीआई से लक्षित प्रेषण अनुरोधों में शामिल करना होगा, या विषयों को लक्षित करने के लिए विषय सदस्यता में जोड़ना होगा।
जैसा कि हमारे क्लाइंट सेटअप गाइड में उल्लेख किया गया है, आपके ऐप को प्रारंभिक स्टार्टअप पर इस टोकन को पुनः प्राप्त करना चाहिए और टाइमस्टैम्प के साथ इसे अपने ऐप सर्वर पर सहेजना चाहिए। यह टाइमस्टैम्प आपके कोड और आपके सर्वर द्वारा लागू किया जाना चाहिए, क्योंकि यह आपको FCM SDK द्वारा प्रदान नहीं किया गया है।
साथ ही, टोकन को सर्वर पर सहेजना और टाइमस्टैम्प में बदलाव होने पर उसे अपडेट करना महत्वपूर्ण है, जैसे कि जब:
- ऐप को एक नए डिवाइस पर पुनर्स्थापित किया गया है
- उपयोगकर्ता ऐप को अनइंस्टॉल/रीइंस्टॉल करता है
- उपयोगकर्ता ऐप डेटा साफ़ करता है।
FCM बैकएंड से अमान्य टोकन प्रतिक्रियाओं का पता लगाएं
FCM से अमान्य टोकन प्रतिक्रियाओं का पता लगाना सुनिश्चित करें और अमान्य होने के लिए जाने जाने वाले किसी भी पंजीकरण टोकन को अपने सिस्टम से हटाकर प्रतिक्रिया दें। HTTP v1 API के साथ, ये त्रुटि संदेश इंगित कर सकते हैं कि आपका प्रेषण अनुरोध पुराने या अमान्य टोकन को लक्षित करता है:
-
UNREGISTERED
(एचटीटीपी 404) -
INVALID_ARGUMENT
(HTTP 400)
अधिक जानकारी के लिए त्रुटि कोड देखें।
यदि आप किसी लक्षित टोकन के लिए इनमें से कोई भी प्रतिक्रिया प्राप्त करते हैं, तो इस टोकन के अपने रिकॉर्ड को हटाना सुरक्षित है, क्योंकि यह फिर कभी मान्य नहीं होगा। हालाँकि, ध्यान रखें कि अभी भी ऐसे मामले होंगे जहाँ एक टोकन वास्तव में अमान्य है, लेकिन इसका कोई संकेत नहीं है। उदाहरण के लिए, कभी-कभी FCM बैकएंड यह सत्यापित नहीं कर सकता कि डिवाइस स्थायी रूप से ऑफ़लाइन हो गया है या नहीं।
पंजीकरण टोकन ताजगी सुनिश्चित करना
यह निर्धारित करना कि कोई टोकन ताज़ा है या बासी हमेशा सीधा नहीं होता है। सभी मामलों को कवर करने के लिए, आपको उस समय के लिए एक सीमा अपनानी चाहिए जब आप टोकन को पुराना मानते हैं; हमारी सिफारिश दो महीने है। दो महीने से अधिक पुराने किसी भी टोकन के निष्क्रिय उपकरण होने की संभावना है; अन्यथा एक सक्रिय उपकरण ने अपने टोकन को ताज़ा कर लिया होता।
टोकन को नियमित रूप से अपडेट करें
हम अनुशंसा करते हैं कि आप समय-समय पर अपने सर्वर पर सभी पंजीकरण टोकन प्राप्त करें और अपडेट करें। इसके लिए आपको चाहिए:
- उपयुक्त एपीआई कॉल (जैसे
token(completion):
ऐप्पल प्लेटफॉर्म के लिए या एंड्रॉइड के लिएgetToken()
) और फिर स्टोरेज के लिए अपने ऐप सर्वर पर वर्तमान टोकन भेजें (टाइमस्टैम्प के साथ) ). यह सभी ग्राहकों/टोकनों को कवर करने के लिए कॉन्फ़िगर किया गया मासिक कार्य हो सकता है। - टोकन के टाइमस्टैम्प को नियमित अंतराल पर अपडेट करने के लिए सर्वर लॉजिक जोड़ें, भले ही टोकन बदल गया हो या नहीं।
आप जो भी समय पैटर्न का पालन करते हैं, समय-समय पर टोकन को अपडेट करना सुनिश्चित करें। प्रति माह एक बार की अद्यतन आवृत्ति संभावित रूप से निष्क्रिय पंजीकरण टोकन का पता लगाने बनाम बैटरी प्रभाव के बीच एक अच्छा संतुलन बनाती है। यह रिफ्रेश करके, आप यह भी सुनिश्चित करते हैं कि कोई भी उपकरण जो निष्क्रिय हो जाता है, उसके दोबारा सक्रिय होने पर उसका पंजीकरण रीफ्रेश हो जाएगा। साप्ताहिक से अधिक बार रिफ्रेश करने का कोई लाभ नहीं है।
विषयों से बासी टोकन की सदस्यता समाप्त करें
पुराने पंजीकरण टोकन को हटाने के लिए विषयों की सदस्यता को प्रबंधित करना एक और विचार है। इसमें दो चरण शामिल हैं:
- आपके ऐप को प्रति माह एक बार और/या जब भी पंजीकरण टोकन बदलता है, विषयों को फिर से सब्सक्राइब करना चाहिए। यह एक सेल्फ-हीलिंग सॉल्यूशन बनाता है, जहां ऐप के फिर से सक्रिय होने पर सब्सक्रिप्शन अपने आप फिर से दिखाई देने लगता है।
- यदि कोई ऐप इंस्टेंस 2 महीने (या आपकी खुद की पुरानी खिड़की) के लिए निष्क्रिय है, तो आपको FCM बैकएंड से टोकन/विषय मैपिंग को हटाने के लिए Firebase Admin SDK का उपयोग करके इसे विषयों से अनसब्सक्राइब करना चाहिए।
इन दो चरणों का लाभ यह है कि आपके फैनआउट तेजी से घटित होंगे क्योंकि फैन आउट करने के लिए कम पुराने टोकन हैं, और एक बार फिर से सक्रिय होने पर आपके पुराने ऐप इंस्टेंस स्वचालित रूप से फिर से सब्सक्राइब हो जाएंगे।
वितरण सफलता को मापना
आम तौर पर, हम सक्रिय रूप से उपयोग किए गए ऐप इंस्टेंस से देखे गए या कैप्चर किए गए कार्यों के आधार पर संदेशों को लक्षित करने की सलाह देते हैं। यह विशेष रूप से महत्वपूर्ण है यदि आप नियमित रूप से बड़ी संख्या में ग्राहकों के साथ विषयों पर संदेश भेजते हैं; यदि उन ग्राहकों का एक हिस्सा वास्तव में निष्क्रिय है, तो आपके वितरण आंकड़ों पर प्रभाव समय के साथ महत्वपूर्ण हो सकता है।
संदेशों को टोकन पर लक्षित करने से पहले, इस पर विचार करें:
- क्या Google Analytics, BigQuery में कैप्चर किया गया डेटा या अन्य ट्रैकिंग संकेत संकेत देते हैं कि टोकन सक्रिय है?
- क्या डिलीवरी के पिछले प्रयास समय की अवधि में लगातार विफल रहे हैं?
- क्या पंजीकरण टोकन पिछले दो महीनों में आपके सर्वर पर अपडेट किया गया है?
- Android उपकरणों के लिए, क्या FCM डेटा एपीआई
droppedDeviceInactive
के कारण संदेश वितरण विफलताओं के उच्च प्रतिशत की रिपोर्ट करता है?
वितरण के बारे में अधिक जानकारी के लिए, संदेश वितरण को समझना देखें।