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

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 पर यह मेज़र करना कि मैसेज को प्राथमिकता नहीं दी जा रही है

  • निजी मैसेज. डिलीवरी के समय, आपके पास यह तय करने का विकल्प होता है कि किसी मैसेज को प्राथमिकता दी गई है या नहीं. इसके लिए, डिलीवर की गई प्राथमिकता की तुलना, getPrimary() और उसकी मूल प्राथमिकता की तुलना getOriginal Priority() से की जा सकती है.

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

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

समस्या हल करना

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

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