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

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

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

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

ज़्यादा और सामान्य प्राथमिकता वाले मैसेज के बीच फ़ैसला लेना

सामान्य प्राथमिकता वाले मैसेज, सामान्य अपडेट के लिए सही होते हैं. हालांकि, ज़रूरी मामलों या कार्रवाइयों के लिए तुरंत डिलीवरी की ज़रूरत होने पर, ज़्यादा प्राथमिकता चुनें. सामान्य प्राथमिकता वाले मैसेज की डिलीवरी में, स्लीप मोड का असर पड़ सकता है. इसलिए, उपयोगकर्ता को दिखने वाली ज़्यादातर सूचनाओं को 'ज़्यादा प्राथमिकता' पर सेट करने से, यह पक्का किया जा सकता है कि वे तुरंत डिलीवर हों. उदाहरण के लिए, चैट मैसेज, खाते से जुड़ी समस्याएं या खाने की डिलीवरी से जुड़े अपडेट जैसी सूचनाओं को ज़्यादा प्राथमिकता पर सेट किया जाना चाहिए.

ज़्यादा और सामान्य प्राथमिकता वाले मैसेज को प्रोसेस करना

Android डिवाइस पर मिलने वाली सबसे ज़्यादा और सामान्य प्राथमिकता वाली सूचनाओं, दोनों के लिए, onMessageReceived हैंडलर में मैसेज पेलोड को प्रोसेस करने के लिए कुछ सेकंड दिए जाते हैं. जिन सूचनाओं के लिए मैसेज के पेलोड को अलग-अलग प्रोसेस करने की ज़रूरत होती है उनके लिए, हमारा सुझाव है कि आप WorkManager जैसे कंस्ट्रक्ट का इस्तेमाल करें. ऐसा इसलिए, क्योंकि यह onMessageReceived हैंडलर को दिए गए समय से ज़्यादा समय ले सकता है.

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

सामान्य प्राथमिकता वाले मैसेज के लिए, Android WorkManager का इस्तेमाल करके सामान्य OneTimeWorkRequest को शेड्यूल किया जा सकता है. इससे यह पक्का किया जा सकेगा कि प्राथमिकता के हिसाब से प्रोसेस करने की सुविधा का इस्तेमाल किए बिना, ज़रूरी अतिरिक्त काम को प्रोसेस किया जाए.

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

Admin SDK, FCM REST API, और Firebase कंसोल का इस्तेमाल करके, अपने उपयोगकर्ताओं को सूचनाएं भेजी जा सकती हैं. Admin SDK और FCM REST API से अपनी प्राथमिकता सेटिंग बदलने के लिए, आपको मैसेज का JSON पेलोड अपडेट करना होगा. प्राथमिकता को ज़्यादा पर सेट करने का तरीका जानने के लिए, यहां दिए गए कोड सैंपल का इस्तेमाल किया जा सकता है. Console से भेजी गई सूचनाओं के लिए, Android के हिसाब से सूचना फ़ील्ड सेट करने की सुविधा काम नहीं करती.

 {
  "message": {
      "notification": {
          "body": "Purchase exceeding $500 detected",
          "title": "Credit card purchase"
      },
      "data": {
          "purchaser": "Your child",
          "items": "Gravity Defier Sneakers"
      },
      "android": {
          "priority": "high"
      },
      "apns": {
          "headers": {
              "apns-priority": "5"
          }
      }
  }
}

Doze मोड में, ज़्यादा प्राथमिकता वाली सूचनाओं की जांच करना

यह पक्का करने के लिए कि उपयोगकर्ता को मिलने पर, आपकी सूचनाएं सही तरीके से भेजी और प्रोसेस की जा रही हैं, सूचनाओं की जांच करने के लिए इन निर्देशों का पालन करें:

  1. Doze मोड का इस्तेमाल करके अपने ऐप्लिकेशन की जांच करें में दिए गए निर्देशों का पालन करके, अपने डिवाइस को Doze मोड पर सेट करें.
  2. टेस्ट डिवाइस पर अपने ऐप्लिकेशन से FCM रजिस्ट्रेशन टोकन ऐक्सेस करें. टोकन को ऐक्सेस करने के तरीके के बारे में ज़्यादा जानने के लिए, बैकग्राउंड में चल रहे ऐप्लिकेशन को जांच के मकसद से मैसेज भेजना लेख पढ़ें.
  3. FCM टोकन मिलने के बाद, FCM सूचना भेजने वाले कोड या cURL कमांड%3B%0A%7D)-,cURL,-curl%20%2DX) का इस्तेमाल करके, टेस्ट डिवाइस पर अपनी ज़्यादा प्राथमिकता वाली सूचना भेजें. इस कमांड में, ज़्यादा प्राथमिकता वाली सूचना से मैच करने वाले कॉन्फ़िगरेशन पैरामीटर होने चाहिए.

Android पर, ज़्यादा प्राथमिकता वाले FCM को प्राथमिकता से हटाना

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 Aggregate Delivery Data API का इस्तेमाल करें. ProxyNotificationInsightPercents, उन सूचनाओं का प्रतिशत बताता है जिन्हें प्रोक्सी किया गया है. साथ ही, उन मैसेज की जानकारी भी देता है जिन्हें प्रोक्सी नहीं किया जा सका.

सूचना मिलने में देरी होने की समस्या हल करना

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

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

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