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 के साथ टास्क शेड्यूल किया जा सकता है.