FCM पंजीकरण टोकन प्रबंधन के लिए सर्वोत्तम अभ्यास

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

बुनियादी सर्वोत्तम अभ्यास

प्रोग्रामेटिक रूप से प्रेषण अनुरोध बनाने के लिए FCM API का उपयोग करने वाले किसी भी ऐप में आपको कुछ मूलभूत प्रथाओं का पालन करना चाहिए। मुख्य सर्वोत्तम प्रथाएं हैं:

  • अपने सर्वर पर पंजीकरण टोकन स्टोर करें। सर्वर के लिए एक महत्वपूर्ण भूमिका प्रत्येक क्लाइंट के टोकन का ट्रैक रखना और सक्रिय टोकन की एक अद्यतन सूची रखना है। हम आपके कोड और आपके सर्वर में टोकन टाइमस्टैम्प लागू करने और नियमित अंतराल पर इस टाइमस्टैम्प को अपडेट करने की दृढ़ता से अनुशंसा करते हैं।
  • संग्रहीत टोकन निकालें जो पुराने हो गए हैं । अमान्य टोकन प्रतिक्रियाओं के स्पष्ट मामलों में टोकन को हटाने के अलावा, आपको संभवतः अन्य संकेतों की निगरानी करने की आवश्यकता होगी कि टोकन पुराना है। यह मार्गदर्शिका इसे प्राप्त करने के लिए आपके कुछ विकल्पों पर चर्चा करती है।

पंजीकरण टोकन प्राप्त करें और स्टोर करें

आपके ऐप के आरंभिक स्टार्टअप पर, FCM SDK क्लाइंट ऐप इंस्टेंस के लिए एक पंजीकरण टोकन जेनरेट करता है। यह वह टोकन है जिसे आपको एपीआई से लक्षित प्रेषण अनुरोधों में शामिल करना होगा, या विषयों को लक्षित करने के लिए विषय सदस्यता में जोड़ना होगा।

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

साथ ही, टोकन को सर्वर पर सहेजना और टाइमस्टैम्प में बदलाव होने पर उसे अपडेट करना महत्वपूर्ण है, जैसे कि कब:

  • ऐप को एक नए डिवाइस पर पुनर्स्थापित किया गया है
  • उपयोगकर्ता ऐप को अनइंस्टॉल/रीइंस्टॉल करता है
  • उपयोगकर्ता ऐप डेटा साफ़ करता है।

FCM बैकएंड से अमान्य टोकन प्रतिक्रियाओं का पता लगाएं

FCM से अमान्य टोकन प्रतिक्रियाओं का पता लगाना सुनिश्चित करें और अमान्य होने के लिए ज्ञात किसी भी पंजीकरण टोकन को अपने सिस्टम से हटाकर प्रतिक्रिया दें। HTTP v1 API के साथ, ये त्रुटि संदेश संकेत कर सकते हैं कि आपका अनुरोध भेजें बासी या अमान्य टोकन को लक्षित करता है:

  • UNREGISTERED (HTTP 404)
  • INVALID_ARGUMENT (HTTP 400)

अधिक जानकारी के लिए त्रुटि कोड देखें।

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

पंजीकरण टोकन ताजगी सुनिश्चित करना

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

नियमित आधार पर टोकन अपडेट करें

हम अनुशंसा करते हैं कि आप समय-समय पर अपने सर्वर पर सभी पंजीकरण टोकन प्राप्त करें और अपडेट करें। इसके लिए आपको आवश्यकता है:

  • उपयुक्त एपीआई कॉल (जैसे token(completion): ऐप्पल प्लेटफॉर्म के लिए या एंड्रॉइड के लिए getToken() ) और फिर स्टोरेज के लिए अपने ऐप सर्वर पर वर्तमान टोकन भेजें (टाइमस्टैम्प के साथ) ) यह सभी क्लाइंट/टोकन को कवर करने के लिए कॉन्फ़िगर किया गया मासिक कार्य हो सकता है।
  • टोकन के टाइमस्टैम्प को नियमित अंतराल पर अपडेट करने के लिए सर्वर लॉजिक जोड़ें, भले ही टोकन बदल गया हो या नहीं।

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

विषयों से पुराने टोकन की सदस्यता समाप्त करें

पुराने पंजीकरण टोकन को हटाने के लिए विषय सदस्यता का प्रबंधन करना एक और विचार है। इसमें दो चरण शामिल हैं:

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

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

वितरण सफलता को मापना

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

संदेशों को टोकन पर लक्षित करने से पहले, इस पर विचार करें:

  • क्या Google Analytics, BigQuery में कैप्चर किया गया डेटा या अन्य ट्रैकिंग सिग्नल संकेत देते हैं कि टोकन सक्रिय है?
  • क्या पिछले डिलीवरी प्रयास समय की अवधि में लगातार विफल रहे हैं?
  • क्या पिछले दो महीनों में आपके सर्वर पर पंजीकरण टोकन अपडेट किया गया है?
  • Android उपकरणों के लिए, FCM Data API , droppedDeviceInactive के कारण संदेश वितरण विफलताओं के उच्च प्रतिशत की रिपोर्ट करता है?

वितरण के बारे में अधिक जानकारी के लिए, संदेश वितरण को समझना देखें।