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

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

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

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

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

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

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

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

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

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

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

अपने उपयोगकर्ताओं को सूचनाएं भेजने के लिए, Admin SDK, FCM REST API, और Firebase कंसोल का इस्तेमाल किया जा सकता है. Admin SDK और FCM REST API से प्राथमिकता की सेटिंग बदलने के लिए, आपको मैसेज के JSON पेलोड को अपडेट करना होगा. प्राथमिकता को ज़्यादा पर सेट करने का तरीका जानने के लिए, यहां दिया गया कोड सैंपल इस्तेमाल करें. कंसोल से भेजी गई सूचनाओं के लिए, 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"
          }
      }
  }
}

डोज़ मोड में, ज़रूरी सूचनाएँ पाने की सुविधा की जांच करना

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

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

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

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

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

Google Play services की मदद से सूचनाएं भेजने की सुविधा

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

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

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

Android Q+ और Google Play services के 19054000 या उसके बाद के वर्शन का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, सूचना वाले मैसेज को इस तरह से प्रॉक्सी करना डिफ़ॉल्ट व्यवहार है. HTTP v1 API के ज़रिए भेजे गए मैसेज को प्रॉक्सी किया जाता है. हालांकि, 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 Aggregate Delivery Data API का इस्तेमाल करें. ProxyNotificationInsightPercents में, प्रॉक्सी किए गए नोटिफ़िकेशन का प्रतिशत दिखता है. साथ ही, उन मैसेज की जानकारी भी दिखती है जिन्हें प्रॉक्सी नहीं किया जा सकता.

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

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

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

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