Android पर, डाउनस्ट्रीम मैसेज की डिलीवरी की प्राथमिकता तय करने के लिए आपके पास दो विकल्प हैं: सामान्य और ज़्यादा प्राथमिकता. सामान्य और ज़्यादा प्राथमिकता वाले मैसेज की डिलीवरी इस तरह काम करती है:
सामान्य प्राथमिकता. डेटा मैसेज के लिए, यह डिफ़ॉल्ट प्राथमिकता होती है. डिवाइस के स्लीप मोड में न होने पर, सामान्य प्राथमिकता वाले मैसेज तुरंत डिलीवर किए जाते हैं. जब डिवाइस Doze मोड में हो, तो डिवाइस के Doze मोड से बाहर निकलने तक, बैटरी बचाने के लिए डिलीवरी में देरी हो सकती है. अगर आपको ऐसे मैसेज डिलीवर करने हैं जिनके लिए समय का ज़्यादा फ़र्क़ नहीं पड़ता, तो डिलीवरी की सामान्य प्राथमिकता चुनें. जैसे, नए ईमेल की सूचनाएं, यूज़र इंटरफ़ेस (यूआई) को सिंक रखना या बैकग्राउंड में ऐप्लिकेशन का डेटा सिंक करना.
जब 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 Aggregate Delivery Data API, यह जानकारी दे सकता है कि Android पर भेजे जाने वाले आपके कितने प्रतिशत मैसेज की प्राथमिकता घटाई जा रही है. हो सकता है कि कुछ मैसेज, एग्रीगेट डेटा रिपोर्ट में शामिल न किए जाएं. हालांकि, इन रिपोर्ट से आपको मैसेज की प्राथमिकता घटाने की दरों के बारे में पूरी जानकारी मिलनी चाहिए. एपीआई से क्वेरी करने के लिए, ज़्यादा जानकारी और सैंपल कोड पाने के लिए, एग्रीगेट किया गया डिलीवरी डेटा लेख पढ़ें. इसे एपीआई एक्सप्लोरर से भी एक्सप्लोर किया जा सकता है.
प्रॉक्सी सूचनाएं. प्रॉक्सी की मदद से भेजी गई सूचनाओं की गिनती, मौजूदा FCM या GA डिलीवरी मेट्रिक में नहीं की जाएगी. इसलिए, आपको सूचना डिलीवरी मेट्रिक में 15% तक की गिरावट दिख सकती है. प्रोक्सी किए गए मैसेज की रिपोर्टिंग के लिए, FCM एग्रीगेट डिलीवरी डेटा एपीआई का इस्तेमाल करें.
ProxyNotificationInsightPercents
, उन सूचनाओं का प्रतिशत दिखाता है जिन्हें प्रोक्सी किया गया है. साथ ही, उन मैसेज की जानकारी भी दिखाता है जिन्हें प्रोक्सी नहीं किया जा सका.
समस्या का हल
पक्का करें कि आपके ऐप्लिकेशन इंस्टेंस में सूचनाएं पाने की सुविधा चालू हो. अगर उपयोगकर्ता ने आपके ऐप्लिकेशन के लिए सूचना पाने की अनुमति बंद कर दी है, तो आपकी कोई भी सूचना पोस्ट नहीं की जाएगी. इस वजह से, आपके मैसेज की प्राथमिकता कम कर दी जाएगी. किसी ऐप्लिकेशन इंस्टेंस पर ज़्यादा प्राथमिकता वाले मैसेज भेजने से पहले, आपको पुष्टि करनी चाहिए कि सूचनाएं चालू हैं.
सूचना पोस्ट करने से पहले, घर पर कॉल न करें. Android मोबाइल का एक छोटा हिस्सा, ज़्यादा इंतज़ार वाले नेटवर्क पर होता है. इसलिए, सूचना दिखाने से पहले अपने सर्वर से कनेक्शन खोलने से बचें. प्रोसेस करने के लिए तय किए गए समय के खत्म होने से पहले, सर्वर को फिर से कॉल करना, ज़्यादा इंतज़ार वाले नेटवर्क पर उपयोगकर्ताओं के लिए जोखिम भरा हो सकता है. इसके बजाय, FCM मैसेज में सूचना का कॉन्टेंट शामिल करें और उसे तुरंत दिखाएं. अगर आपको Android पर, ऐप्लिकेशन में मौजूद ज़्यादा कॉन्टेंट को सिंक करना है, तो WorkManager की मदद से कोई टास्क शेड्यूल किया जा सकता है, ताकि वह बैकग्राउंड में काम कर सके.