বাজেট API-এর ভূমিকা

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

ব্যবহারকারীর ডিভাইসে ডেটা সিঙ্ক্রোনাইজ করার জন্য একটি পুশ বার্তা পাঠাতে সক্ষম হওয়া বা আপনি পূর্বে দেখানো একটি বিজ্ঞপ্তি লুকিয়ে রাখতে সক্ষম হওয়া ব্যবহারকারী এবং ডেভেলপারদের জন্য অত্যন্ত উপযোগী হতে পারে, কিন্তু ব্যবহারকারী না জেনে একটি ওয়েব অ্যাপকে ব্যাকগ্রাউন্ডে কাজ করার অনুমতি দেওয়া অপব্যবহারের জন্য উন্মুক্ত। .

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

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

TL;DR বাজেট API আপনাকে বাজেট সংরক্ষণ করতে, বাজেট ব্যবহার করতে, অবশিষ্ট বাজেটের একটি তালিকা পেতে এবং ব্যাকগ্রাউন্ড অপারেশনের খরচ বুঝতে অনুমতি দেয়

রিজার্ভিং বাজেট

Chrome 60 এবং তার উপরে, navigator.budget.reserve() পদ্ধতি কোনো পতাকা ছাড়াই উপলব্ধ হবে।

reserve() পদ্ধতি আপনাকে একটি নির্দিষ্ট ক্রিয়াকলাপের জন্য বাজেটের অনুরোধ করতে দেয় এবং বাজেট সংরক্ষিত করা যায় কিনা তা নির্দেশ করার জন্য এটি একটি বুলিয়ান ফেরত দেবে। বাজেট সংরক্ষিত থাকলে, আপনার ব্যাকগ্রাউন্ড কাজের ব্যবহারকারীকে অবহিত করার প্রয়োজন নেই।

পুশ নোটিফিকেশনের উদাহরণে, আপনি একটি "সাইলেন্ট-পুশ" অপারেশনের জন্য বাজেট রিজার্ভ করার চেষ্টা করতে পারেন এবং যদি reserve() সত্যের সাথে সমাধান হয়, তাহলে অপারেশন অনুমোদিত হয়। অন্যথায় এটি মিথ্যা হবে এবং আপনাকে একটি বিজ্ঞপ্তি দেখাতে হবে

self.addEventListener('push', event => {
 const promiseChain = navigator.budget.reserve('silent-push')
   .then((reserved) => {
     if (reserved) {
       // No need to show a notification.
       return;
     }

     // Not enough budget is available, must show a notification.
     return registration.showNotification(...);
   });
 event.waitUntil(promiseChain);
});

Chrome 60-এ, 'silent-push' হল একমাত্র অপারেশনের ধরন যা উপলব্ধ, কিন্তু আপনি spec-এ অপারেশন প্রকারের সম্পূর্ণ তালিকা খুঁজে পেতে পারেন। একবার ব্যবহার করার পর টেস্টিং বা ডিবাগিংয়ের উদ্দেশ্যে আপনার বাজেট বাড়ানোর কোনো সহজ উপায় নেই, কিন্তু একটি অস্থায়ী সমাধান হিসাবে আপনি Chrome এ একটি নতুন প্রোফাইল তৈরি করতে পারেন৷ দুঃখজনকভাবে আপনি এর জন্য ছদ্মবেশী ব্যবহার করতে পারবেন না কারণ বাজেট API ছদ্মবেশীতে শূন্যের বাজেট ফেরত দেবে (যদিও আমার পরীক্ষার সময় একটি ত্রুটির ফলে একটি বাগ রয়েছে)।

আপনার শুধুমাত্র reserve() কল করা উচিত যখন আপনি ভবিষ্যতে কোনো সময়ে আপনি যে অপারেশনটি রিজার্ভ করছেন তা সম্পাদন করতে চান। মনে রাখবেন যে আপনি যদি উপরের উদাহরণে রিজার্ভ কল করেন কিন্তু তারপরও একটি বিজ্ঞপ্তি দেখিয়ে থাকেন, তাহলেও বাজেট ব্যবহার করা হবে।

একটি সাধারণ ব্যবহারের ক্ষেত্রে যা একা reserve() দ্বারা সক্ষম করা হয় না, তা হল ব্যাকএন্ড থেকে একটি নীরব ধাক্কা নির্ধারণ করার ক্ষমতা। এই ব্যবহারের ক্ষেত্রে সক্ষম করার জন্য বাজেট API-এর API আছে কিন্তু সেগুলি এখনও Chrome-এ কাজ করা হচ্ছে এবং বর্তমানে শুধুমাত্র পতাকা এবং/অথবা একটি অরিজিন ট্রায়ালের পিছনে উপলব্ধ।

বাজেট এপিআই এবং অরিজিন ট্রায়াল

দুটি পদ্ধতি আছে, getBudget() এবং getCost() , যা একটি ওয়েব অ্যাপ তাদের বাজেটের ব্যবহারের পরিকল্পনা করতে ব্যবহার করতে পারে।

ক্রোম 60-এ, এই দুটি পদ্ধতিই পাওয়া যায় যদি আপনি অরিজিন ট্রায়ালের জন্য সাইন আপ করেন তবে অন্যথায় পরীক্ষার জন্য আপনি এক্সপেরিমেন্টাল ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্য পতাকা সক্রিয় করে স্থানীয়ভাবে ব্যবহার করতে পারেন (Open chrome://flags/#enable-experimental-web- Chrome-এ প্ল্যাটফর্ম-বৈশিষ্ট্য)।

চলুন দেখি কিভাবে এই API গুলো ব্যবহার করতে হয়।

আপনার বাজেট পান

getBudget() পদ্ধতিতে আপনি আপনার উপলব্ধ বাজেট খুঁজে পেতে পারেন। কিছু ব্রাউজারে (যেমন ক্রোম) সময়ের সাথে বাজেট 'ক্ষয়' হবে, তাই আপনাকে সম্পূর্ণ দৃশ্যমানতা দেওয়ার জন্য এটি BudgetStates একটি অ্যারে প্রদান করে, যা ভবিষ্যতে বিভিন্ন সময়ে আপনার বাজেট কেমন হবে তা নির্দেশ করে৷

বাজেট এন্ট্রি তালিকা করতে আমরা চালাতে পারি:

navigator.budget.getBudget()
.then((budgets) => {
  budgets.forEach((element) => {
    console.log(\`At '${new Date(element.time).toString()}' \` +
      \`your budget will be '${element.budgetAt}'.\`);
  });
});

প্রথম এন্ট্রি হবে আপনার বর্তমান বাজেট এবং অতিরিক্ত মান দেখাবে ভবিষ্যতে বিভিন্ন পয়েন্টে আপনার বাজেট কেমন হবে।

At 'Mon Jun 05 2017 12:47:20' you will have a budget of '3'.
At 'Fri Jun 09 2017 10:42:57' you will have a budget of '2'.
At 'Fri Jun 09 2017 12:31:09' you will have a budget of '1'.

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

একটি অপারেশন খরচ পান

একটি অপারেশনের জন্য কত খরচ হবে তা জানার জন্য, getCost() কল করা একটি নম্বর ফেরত দেবে যা নির্দেশ করে যে বাজেটের সর্বাধিক পরিমাণ খরচ হবে যদি আপনি সেই অপারেশনের জন্য reserve() কল করলে।

উদাহরণস্বরূপ, আপনি যখন একটি পুশ বার্তা পান তখন আমরা একটি বিজ্ঞপ্তি না দেখানোর খরচ খুঁজে পেতে পারি (যেমন একটি নীরব ধাক্কার খরচ), নিম্নলিখিত কোড সহ:

navigator.budget.getCost('silent-push')
.then((cost) => {
  console.log('Cost of silent push is:', cost);
})
.catch((err) => {
  console.error('Unable to get cost:', err);
});

লেখার সময়, Chrome 60 মুদ্রণ করবে:

Cost of silent push is: 2

reserve() এবং getCost() পদ্ধতির সাথে হাইলাইট করার একটি জিনিস হল যে একটি অপারেশনের প্রকৃত খরচ getCost() দ্বারা ফেরত খরচের চেয়ে কম হতে পারে। আপনার বর্তমান বাজেট নির্দেশিত খরচের চেয়ে কম হলে আপনি এখনও একটি অপারেশন সংরক্ষণ করতে সক্ষম হতে পারেন। স্পেক থেকে নির্দিষ্ট বিবরণ নিম্নরূপ :

এটি Chrome-এ বর্তমান API এবং যেহেতু ওয়েব নতুন API-কে সমর্থন করে চলেছে যার জন্য ব্যাকগ্রাউন্ডের কাজ সম্পাদন করার ক্ষমতা প্রয়োজন, যেমন ব্যাকগ্রাউন্ড ফেচ , বাজেট API ব্যবহারকারীকে অবহিত না করেই আপনি কতগুলি ক্রিয়াকলাপ সম্পাদন করতে পারেন তা পরিচালনা করতে ব্যবহার করা যেতে পারে৷

আপনি API ব্যবহার করার সময় অনুগ্রহ করে গিটহাব রেপোতে প্রতিক্রিয়া দিন বা crbug.com- এ Chrome বাগ ফাইল করুন।