Android বার্তা অগ্রাধিকার সেট করুন এবং পরিচালনা করুন  |  Firebase Cloud Messaging (original) (raw)

অ্যান্ড্রয়েডে ডাউনস্ট্রিম মেসেজের ডেলিভারি অগ্রাধিকার নির্ধারণের জন্য আপনার কাছে দুটি বিকল্প রয়েছে: সাধারণ এবং উচ্চ অগ্রাধিকার। সাধারণ এবং উচ্চ অগ্রাধিকারের মেসেজের ডেলিভারি এইভাবে কাজ করে:

উচ্চ এবং সাধারণ অগ্রাধিকার বার্তাগুলির মধ্যে সিদ্ধান্ত নেওয়া

সাধারণ আপডেটের জন্য সাধারণ প্রায়োরিটি মেসেজ উপযুক্ত হলেও, জরুরি বিষয় বা কাজের জন্য তাৎক্ষণিক ডেলিভারি নিশ্চিত করতে উচ্চ প্রায়োরিটি বেছে নিন। যেহেতু ডোজ মোডের কারণে সাধারণ প্রায়োরিটি মেসেজের ডেলিভারির সময় প্রভাবিত হতে পারে, তাই আপনার ব্যবহারকারীদের কাছে দৃশ্যমান বেশিরভাগ নোটিফিকেশনকে উচ্চ প্রায়োরিটিতে সেট করলে সেগুলো দ্রুত ডেলিভারি নিশ্চিত হবে। উদাহরণস্বরূপ, চ্যাট মেসেজ, অ্যাকাউন্টের সমস্যা বা ফুড ডেলিভারি আপডেটের মতো নোটিফিকেশনগুলোকে উচ্চ প্রায়োরিটিতে সেট করা উচিত।

উচ্চ এবং সাধারণ অগ্রাধিকারের বার্তাগুলির জন্য বার্তা প্রক্রিয়াকরণ

অ্যান্ড্রয়েড ডিভাইসে প্রাপ্ত উচ্চ অগ্রাধিকার এবং সাধারণ অগ্রাধিকার উভয় ধরনের মেসেজের ক্ষেত্রেই, onMessageReceived হ্যান্ডলারে মেসেজ পেলোড প্রসেস করার জন্য কয়েক সেকেন্ড সময় দেওয়া হয়, যেখানে সাধারণ অগ্রাধিকারের মেসেজের তুলনায় উচ্চ অগ্রাধিকারের মেসেজের জন্য কিছুটা বেশি সময় বরাদ্দ করা হয়। এই সময়টি শুধুমাত্র তাৎক্ষণিকভাবে একটি নোটিফিকেশন রেন্ডার করার জন্য যথেষ্ট বলে ধরে নেওয়া হয়। যদি আপনাকে ডিভাইস স্টোরেজ থেকে কোনো ছবি লোড করা বা অতিরিক্ত কন্টেন্ট সংগ্রহের জন্য আপনার সার্ভারকে কল করার মতো কোনো অতিরিক্ত কাজ করতে হয়, তাহলে আপনাকে অতিরিক্ত পদক্ষেপ নিতে হবে।

onMessageReceived মেথডটি একটি আলাদা ওয়ার্কার থ্রেডে কল করা হয়। সর্বোত্তম অনুশীলন হিসেবে, আপনার উচিত onMessageReceived মেথডের মধ্যেই মেসেজ পেলোড প্রসেস করা এবং সাথে সাথে একটি নোটিফিকেশন প্রদর্শন করা। onMessageReceived মেথডের মধ্যে আপনার অতিরিক্ত অ্যাসিঙ্ক্রোনাস নেটওয়ার্ক কল করা বা একটি আলাদা থ্রেডে পেলোড প্রসেসিং করা উচিত নয়, কারণ এমনটা করলে পেলোড সম্পূর্ণরূপে প্রসেস হওয়ার আগেই আপনার অ্যাপ্লিকেশনটি একটি বৈধ প্রসেস লাইফসাইকেলের বাইরে চলে যেতে পারে। যদি এমনটা হয়, তাহলে আপনি দেখতে পারেন যে পাঠানো কিছু নির্দিষ্ট FCM মেসেজের ফলে নোটিফিকেশন দেরিতে আসছে বা অনুপস্থিত থাকছে।

আপনার মেসেজ প্রসেস করার জন্য যদি অতিরিক্ত সময়ের প্রয়োজন হয়, উদাহরণস্বরূপ আপনার মেসেজ পেলোডে থাকা কোনো imageUrl আনার জন্য, তাহলে অ্যাপ্লিকেশন লাইফসাইকেল বাড়ানোর জন্য আপনাকে WorkManager বা ফোরগ্রাউন্ড সার্ভিসের (foreground service) মতো কোনো কনস্ট্রাক্ট ব্যবহার করতে হবে। আপনার নোটিফিকেশনগুলো সম্পূর্ণরূপে প্রসেস হয়েছে কিনা তা যাচাই করার জন্য, যখন আপনি onMessageReceived মেথডটি ওভাররাইড করবেন , তখন নিম্নলিখিত নির্দেশিকা অনুসরণ করা উচিত।

বার্তাগুলির জন্য অগ্রাধিকার নির্ধারণ করা

আপনি Admin SDK , এফসিএম রেস্ট এপিআই FCM REST API), এবং ফায়ারবেস কনসোল Firebase console) ব্যবহার করে আপনার ব্যবহারকারীদের কাছে নোটিফিকেশন পাঠাতে পারেন। Admin SDK এবং এফসিএম রেস্ট এপিআই থেকে আপনার প্রায়োরিটি সেটিং পরিবর্তন করতে, আপনাকে মেসেজ JSON পেলোড আপডেট করতে হবে। প্রায়োরিটি কীভাবে হাই (high) সেট করতে হয় তা দেখতে আপনি নিম্নলিখিত কোড স্যাম্পলটি ব্যবহার করতে পারেন। কনসোল থেকে পাঠানো নোটিফিকেশনের ক্ষেত্রে, অ্যান্ড্রয়েড-নির্দিষ্ট নোটিফিকেশন ফিল্ড সেট করা সমর্থিত নয়।

 {
  "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. “Test your app with Doze” এর নির্দেশাবলী ব্যবহার করে আপনার ডিভাইসটিকে ডোজ মোডে সেট করুন।
  2. টেস্ট ডিভাইসে আপনার অ্যাপ থেকে আপনার FCM রেজিস্ট্রেশন টোকেনটি অ্যাক্সেস করুন। টোকেনটি কীভাবে অ্যাক্সেস করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, “ব্যাকগ্রাউন্ড অ্যাপে একটি টেস্ট মেসেজ পাঠান” দেখুন।
  3. একবার আপনার কাছে FCM টোকেন চলে এলে, আপনার FCM নোটিফিকেশন পাঠানোর কোড ব্যবহার করে অথবা এমন একটি cURL কমান্ড দিয়ে টেস্ট ডিভাইসটিতে আপনার উচ্চ অগ্রাধিকারের নোটিফিকেশনটি পাঠান, যেটির কনফিগারেশন প্যারামিটারগুলো আপনার উচ্চ অগ্রাধিকারের নোটিফিকেশনের সাথে মেলে।

অ্যান্ড্রয়েডে উচ্চ অগ্রাধিকার সম্পন্ন FCM এর অগ্রাধিকার হ্রাস

অ্যান্ড্রয়েডে উচ্চ অগ্রাধিকারের বার্তাগুলি সময়-সংবেদনশীল, ব্যবহারকারীর কাছে দৃশ্যমান বিষয়বস্তুর জন্য ব্যবহৃত হয় এবং এগুলির ফলে ব্যবহারকারীর কাছে নোটিফিকেশন আসা উচিত। যদি FCM এমন কোনো প্যাটার্ন শনাক্ত করে যেখানে বার্তাগুলির ফলে ব্যবহারকারীর কাছে নোটিফিকেশন আসছে না, তাহলে আপনার বার্তাগুলির অগ্রাধিকার কমিয়ে সাধারণ অগ্রাধিকার দেওয়া হতে পারে অথবা সেগুলি পরিচালনার জন্য Google Play পরিষেবাগুলিকে দায়িত্ব দেওয়া হতে পারে

মেসেজকে অগ্রাধিকারহীন করা হবে নাকি প্রক্সি করা হবে, তা নির্ধারণ করার জন্য FCM বিগত ৭ দিনের মেসেজের আচরণ ব্যবহার করে; এটি আপনার অ্যাপ্লিকেশনের প্রতিটি ইনস্ট্যান্সের জন্য স্বাধীনভাবে এই সিদ্ধান্ত নেয়। যদি উচ্চ অগ্রাধিকারের মেসেজের প্রতিক্রিয়ায় নোটিফিকেশনগুলো এমনভাবে প্রদর্শিত হয় যা ব্যবহারকারীর কাছে দৃশ্যমান, তাহলে আপনার ভবিষ্যতের উচ্চ-অগ্রাধিকারের মেসেজগুলো প্রভাবিত হবে না।

গুগল প্লে পরিষেবাগুলির সাথে বিজ্ঞপ্তি প্রতিনিধিদল

নির্দিষ্ট কিছু শর্ত পূরণকারী উচ্চ অগ্রাধিকারের নোটিফিকেশন বার্তাগুলোকে অগ্রাধিকার কমানোর পরিবর্তে গুগল প্লে সার্ভিসেস দ্বারা প্রক্সি করা হয়। এর মানে হলো, অ্যাপটি চালু করার কোনো প্রয়োজন ছাড়াই, অ্যাপটির পক্ষ থেকে গুগল প্লে সার্ভিসেস নোটিফিকেশনগুলো প্রদর্শন করে। অ্যান্ড্রয়েড ডিভাইসগুলোতে সার্বিকভাবে আরও ভালো ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য এটি করা হয়।

উল্লেখ্য যে, প্রক্সি করা নোটিফিকেশন মেসেজগুলো, মেসেজ গ্রহণ সংক্রান্ত অ্যানালিটিক্স যেভাবে রিপোর্ট করা হয়, তাতে পরিবর্তন নিয়ে আসে:

এইভাবে নোটিফিকেশন মেসেজ প্রক্সি করা হলো সেইসব অ্যাপের ডিফল্ট আচরণ, যেগুলো Android Q+ এবং Google Play services ভার্সন 19054000 বা তার পরবর্তী সংস্করণ ব্যবহার করে। HTTP v1 API-এর মাধ্যমে পাঠানো মেসেজ প্রক্সি করা হয়, কিন্তু Firebase কনসোল বা লিগ্যাসি API-এর মাধ্যমে পাঠানো মেসেজ প্রক্সি করা হবে না । উল্লেখ্য যে, এই ফিচারটি বর্তমানে বিটা পর্যায়ে রয়েছে এবং এতে পরিবর্তন আসতে পারে।

যদিও ডিভাইসের ব্যাটারি এবং মেমরির সুবিধার জন্য আমরা ডেলিগেশন চালু রাখার জোরালো পরামর্শ দিই, আপনি নিম্নলিখিত যেকোনো উপায়ে এই আচরণটি বন্ধ করতে পারেন:

অ্যান্ড্রয়েডে বার্তার অগ্রাধিকার হ্রাস পরিমাপ করা

সমস্যা সমাধান বিজ্ঞপ্তি বিলম্ব