मैसेज की प्राथमिकता सेट और मैनेज करना

Android पर, डाउनस्ट्रीम मैसेज की डिलीवरी की प्राथमिकता तय करने के लिए आपके पास दो विकल्प हैं: सामान्य और ज़्यादा प्राथमिकता. सामान्य और ज़्यादा प्राथमिकता वाले मैसेज की डिलीवरी इस तरह काम करती है:

  • सामान्य प्राथमिकता. डेटा मैसेज के लिए, यह डिफ़ॉल्ट प्राथमिकता होती है. सामान्य प्राथमिकता वाले मैसेज, डिवाइस के स्लीप मोड में न होने पर तुरंत डिलीवर किए जाते हैं. जब डिवाइस डॉज़ मोड में हो, तो डिवाइस के डॉज़ मोड से बाहर निकलने तक, बैटरी बचाने के लिए डिलीवरी में देरी हो सकती है. अगर आपको ऐसे मैसेज डिलीवर करने हैं जो समय के हिसाब से ज़्यादा ज़रूरी नहीं हैं, तो डिलीवरी की सामान्य प्राथमिकता चुनें. जैसे, नए ईमेल की सूचनाएं, यूज़र इंटरफ़ेस (यूआई) को सिंक रखना या बैकग्राउंड में ऐप्लिकेशन का डेटा सिंक करना.

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

  • ज़्यादा प्राथमिकता. FCM, ज़्यादा प्राथमिकता वाले मैसेज तुरंत डिलीवर करने की कोशिश करता है. इससे FCM, ज़रूरत पड़ने पर किसी सो रहे डिवाइस को जगा सकता है और कुछ सीमित प्रोसेसिंग कर सकता है. इसमें नेटवर्क का बहुत सीमित ऐक्सेस भी शामिल है. आम तौर पर, ज़्यादा प्राथमिकता वाले मैसेज से, उपयोगकर्ता आपके ऐप्लिकेशन या उसकी सूचनाओं के साथ इंटरैक्ट करता है.

Android पर मैसेज मैनेज करना और प्राथमिकता हटाना

Android पर ज़्यादा प्राथमिकता वाले मैसेज, समय के हिसाब से ज़रूरी और उपयोगकर्ता को दिखने वाले कॉन्टेंट के लिए होते हैं. इनसे उपयोगकर्ता को सूचनाएं मिलनी चाहिए. अगर FCM को किसी ऐसे पैटर्न का पता चलता है जिसमें मैसेज से उपयोगकर्ता को सूचनाएं नहीं मिलती हैं, तो आपके मैसेज की प्राथमिकता को सामान्य प्राथमिकता पर सेट किया जा सकता है. इसके अलावा, Google Play Services को मैसेज मैनेज करने के लिए अधिकार भी दिया जा सकता है.

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

Google Play services की मदद से सूचनाओं को किसी दूसरे ऐप्लिकेशन को देने की सुविधा

Google Play Services, कुछ शर्तें पूरी करने वाले ज़रूरी सूचना मैसेज (डेटा मैसेज नहीं) को प्राथमिकता देने के बजाय, उनकी प्रोक्सी करता है. इसका मतलब है कि ऐप्लिकेशन के लिए सूचनाएं, Google Play services दिखाता है. इसके लिए, ऐप्लिकेशन को शुरू करने की ज़रूरत नहीं होती. ऐसा इसलिए किया जाता है, ताकि Android डिवाइसों पर उपयोगकर्ताओं को बेहतर अनुभव मिल सके.

ध्यान दें कि प्रॉक्सी की मदद से सूचनाएं भेजने की सुविधा से, मैसेज से जुड़े आंकड़ों को रिपोर्ट करने के तरीके में बदलाव होता है:

  • प्रॉक्सी की मदद से भेजी गई सूचनाओं के आंकड़े पाने के लिए, आपके ऐप्लिकेशन में FCM SDK टूल का 24.0.0 या इसके बाद का वर्शन होना चाहिए.
  • आपको मिलने वाले मैसेज की संख्या में, पहले की तुलना में देरी या गिरावट दिख सकती है. इसकी वजह यह है कि प्रॉक्सी की मदद से भेजी गई सूचनाओं के आंकड़े, सिर्फ़ आपके ऐप्लिकेशन के शुरू होने के बाद ही रिपोर्ट किए जाते हैं. अगर सूचना मिलने के बाद ऐप्लिकेशन नहीं खुलता है, तो हो सकता है कि आंकड़े बिलकुल भी रिपोर्ट न किए जाएं.

Android Q और Google Play services के 19054000 या उसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, सूचना मैसेज को इस तरह से प्रॉक्सी करना डिफ़ॉल्ट तौर पर होता है. एचटीटीपी v1 एपीआई के ज़रिए भेजे गए मैसेज को प्रोक्सी किया जाता है. हालांकि, Firebase कंसोल या लेगसी एपीआई के ज़रिए भेजे गए मैसेज को प्रोक्सी नहीं किया जाएगा. ध्यान दें कि फ़िलहाल, यह सुविधा बीटा वर्शन में है और इसमें बदलाव किए जा सकते हैं.

हमारा सुझाव है कि डिवाइस की बैटरी और मेमोरी को बेहतर बनाने के लिए, डिवाइस के ऐक्सेस को दूसरों को देने की सुविधा चालू रखें. हालांकि, इस सुविधा से ऑटोमैटिक रूप से ऐक्सेस देने की सुविधा को इनमें से किसी भी तरीके से बंद किया जा सकता है:

  • ऐप्लिकेशन-लेवल पर: अपने ऐप्लिकेशन मेनिफ़ेस्ट में, डायरेक्टिव <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/> जोड़ें.
  • ऐप्लिकेशन इंस्टेंस के आधार पर: ऐप्लिकेशन इंस्टेंस के लिए, अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) फ़्लो में fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> सेट करें. यह सेटिंग, इस्तेमाल के उदाहरण के हिसाब से सेट की जानी चाहिए.
  • हर मैसेज के हिसाब से: मैसेज भेजने के अनुरोध के लिए, AndroidNotification ऑब्जेक्ट में proxy बटन को DENY पर सेट करें.

Android पर मैसेज की प्राथमिकता कम करने का आकलन करना

  • अलग-अलग मैसेज. डिलीवरी के बाद, यह तय किया जा सकता है कि किसी मैसेज की प्राथमिकता को कम किया गया है या नहीं. इसके लिए, getPriority() से मिली डिलीवर की गई प्राथमिकता की तुलना, getOriginalPriority() से मिली मूल प्राथमिकता से करें.

  • सभी मैसेज. FCM एग्रीगेट डिलीवरी डेटा एपीआई, यह जानकारी दे सकता है कि Android पर भेजे जाने वाले आपके कितने प्रतिशत मैसेज की प्राथमिकता घटाई जा रही है. हो सकता है कि कुछ मैसेज, एग्रीगेट डेटा रिपोर्ट से हटा दिए जाएं, लेकिन कुल मिलाकर, इन रिपोर्ट से मैसेज की प्राथमिकता घटाने की दरों के बारे में दुनिया भर में जानकारी मिलनी चाहिए. एपीआई से क्वेरी करने के लिए ज़्यादा जानकारी और सैंपल कोड पाने के लिए, एग्रीगेट किया गया डिलीवरी डेटा लेख पढ़ें. इसे एपीआई एक्सप्लोरर से भी एक्सप्लोर किया जा सकता है.

  • प्रॉक्सी सूचनाएं. प्रॉक्सी की मदद से भेजी गई सूचनाओं की गिनती, मौजूदा FCM या GA डिलीवरी मेट्रिक में नहीं की जाएगी. इसलिए, आपको सूचना डिलीवरी मेट्रिक में 15% तक की गिरावट दिख सकती है. प्रोक्सी किए गए मैसेज की रिपोर्टिंग के लिए, FCM एग्रीगेट डिलीवरी डेटा एपीआई का इस्तेमाल करें. ProxyNotificationInsightPercents, उन सूचनाओं का प्रतिशत दिखाता है जिन्हें प्रोक्सी किया गया है. साथ ही, उन मैसेज की जानकारी भी दिखाता है जिन्हें प्रोक्सी नहीं किया जा सका.

समस्या का हल

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

  • सूचना पोस्ट करने से पहले, घर पर कॉल न करें. Android मोबाइल का एक छोटा हिस्सा, ज़्यादा इंतज़ार वाले नेटवर्क पर होता है. इसलिए, सूचना दिखाने से पहले अपने सर्वर से कनेक्शन खोलने से बचें. प्रोसेस करने के लिए तय किए गए समय के खत्म होने से पहले, सर्वर को फिर से कॉल करना, ज़्यादा इंतज़ार वाले नेटवर्क पर उपयोगकर्ताओं के लिए जोखिम भरा हो सकता है. इसके बजाय, FCM मैसेज में सूचना का कॉन्टेंट शामिल करें और उसे तुरंत दिखाएं. अगर आपको Android पर, ऐप्लिकेशन में मौजूद ज़्यादा कॉन्टेंट को सिंक करना है, तो बैकग्राउंड में इसे मैनेज करने के लिए, WorkManager के साथ टास्क शेड्यूल किया जा सकता है.