একটি বার্তার জীবনকাল সেট করুন

FCM সাধারণত বার্তা পাঠানোর সাথে সাথেই পৌঁছে দেয়। তবে, এটি সবসময় সম্ভব নাও হতে পারে। উদাহরণস্বরূপ, ডিভাইসটি অনুপলব্ধ হতে পারে অথবা FCM ইচ্ছাকৃতভাবে বার্তা বিলম্বিত করতে পারে যাতে কোনও অ্যাপ অতিরিক্ত রিসোর্স ব্যবহার না করে এবং ব্যাটারির আয়ুকে নেতিবাচকভাবে প্রভাবিত না করে।

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

অ্যান্ড্রয়েড এবং ওয়েবে, আপনি একটি বার্তার সর্বোচ্চ আয়ুষ্কাল নির্দিষ্ট করতে পারেন। মানটি অবশ্যই 0 থেকে 2,419,200 সেকেন্ড (28 দিন) পর্যন্ত হতে হবে এবং এটি FCM বার্তাটি সংরক্ষণ এবং বিতরণের সর্বোচ্চ সময়কালের সাথে সামঞ্জস্যপূর্ণ। ডিফল্টরূপে, যে অনুরোধগুলিতে এই ক্ষেত্রটি থাকে না, সেগুলি সর্বোচ্চ চার সপ্তাহ স্থায়ী হয়।

iOS-এ, আপনি ApnsConfig অবজেক্টে apns-expiration হেডার সেট করতে পারেন। আরও বিস্তারিত জানার জন্য, APN-তে বিজ্ঞপ্তি অনুরোধ পাঠানোর বিষয়ে Apple-এর ডকুমেন্টেশন দেখুন।

এই বৈশিষ্ট্যটির কিছু সম্ভাব্য ব্যবহার এখানে দেওয়া হল:

  • ভিডিও চ্যাট ইনকামিং কল
  • আমন্ত্রণ পত্রের মেয়াদ শেষ হচ্ছে
  • ক্যালেন্ডার ইভেন্ট

একটি বার্তার জীবনকাল নির্দিষ্ট করার আরেকটি সুবিধা হল যে FCM 0 সেকেন্ডের টাইম টু লাইভ মানের বার্তাগুলিতে কলাপসিবল মেসেজ থ্রোটলিং প্রয়োগ করে না। মনে রাখবেন যে 0 এর ttl মান মানে হল যে বার্তাগুলি তাৎক্ষণিকভাবে বিতরণ করা যায় না তা বাতিল করা হয়। তবে, যেহেতু এই ধরনের বার্তাগুলি কখনও সংরক্ষণ করা হয় না, এটি বিজ্ঞপ্তি বার্তা পাঠানোর জন্য সর্বোত্তম ল্যাটেন্সি প্রদান করে।

এখানে ttl অন্তর্ভুক্ত একটি অনুরোধের একটি উদাহরণ দেওয়া হল:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

একটি বার্তার আজীবন

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

যদি ডিভাইসটি সংযুক্ত থাকে কিন্তু Doze-তে থাকে, তাহলে ডিভাইসটি Doze-এর বাইরে না আসা পর্যন্ত FCM দ্বারা একটি নিম্ন অগ্রাধিকার বার্তা সংরক্ষণ করা হয়। যদি collapse_key সেট করা থাকে, এবং একই collapse কী এবং রেজিস্ট্রেশন টোকেন সহ একটি বিদ্যমান বার্তা ডেলিভারির জন্য অপেক্ষা করছে, তাহলে পুরানো বার্তাটি বাতিল করা হয় এবং তারপরে নতুন বার্তাটি তার স্থান নেয়। তবে, যদি collapse কী সেট না করা থাকে, তাহলে নতুন এবং পুরানো উভয় বার্তাই ভবিষ্যতের ডেলিভারির জন্য সংরক্ষণ করা হয়।

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

অ্যান্ড্রয়েড ডিভাইসের ক্ষেত্রে, যদি ডিভাইসটি এক মাসেরও বেশি সময় ধরে FCM এর সাথে সংযুক্ত না থাকে, তবুও FCM বার্তাটি গ্রহণ করে কিন্তু তাৎক্ষণিকভাবে তা বাতিল করে দেয়। যদি ডিভাইসটি আপনার পাঠানো শেষ ডেটা বার্তার চার সপ্তাহের মধ্যে সংযোগ করে, তাহলে আপনার ক্লায়েন্ট অ্যাপটি onDeletedMessages() কলব্যাক পাবে।

অ্যান্ড্রয়েড বা অ্যাপল প্ল্যাটফর্মে বার্তা সরবরাহ সম্পর্কে আরও অন্তর্দৃষ্টি পেতে, আপনি FCM রিপোর্টিং ড্যাশবোর্ড ব্যবহার করতে পারেন, যা অ্যাপল এবং অ্যান্ড্রয়েড ডিভাইসে প্রেরিত এবং খোলা বার্তার সংখ্যা রেকর্ড করে, সাথে অ্যান্ড্রয়েড অ্যাপের ইম্প্রেশনের ডেটাও রেকর্ড করে।