প্রকাশিত: ১৮ ডিসেম্বর, ২০১৮
স্ক্রিন ওয়েক লক এপিআই কী?
ব্যাটারির চার্জ শেষ না হওয়া এড়াতে, বেশিরভাগ ডিভাইসই যখন অলস অবস্থায় থাকে, তখন দ্রুত ঘুমিয়ে পড়ে। যদিও বেশিরভাগ সময় এটি ঠিক থাকে, কিছু অ্যাপ্লিকেশনের কাজ সম্পন্ন করার জন্য স্ক্রিন জাগ্রত রাখতে হয়। উদাহরণ হিসেবে রান্নার অ্যাপের কথা বলা যায় যা রেসিপির ধাপ বা বল পাজলের মতো গেমের ধাপগুলি দেখায়, যা ইনপুটের জন্য ডিভাইস মোশন API ব্যবহার করে।
স্ক্রিন ওয়েক লক এপিআই ডিভাইসটিকে ম্লান এবং স্ক্রিন লক হওয়া থেকে রক্ষা করার একটি উপায় প্রদান করে। এই ক্ষমতা নতুন অভিজ্ঞতা প্রদান করে যা এখন পর্যন্ত একটি প্ল্যাটফর্ম-নির্দিষ্ট অ্যাপের প্রয়োজন ছিল।
স্ক্রিন ওয়েক লক এপিআই হ্যাকি এবং সম্ভাব্য পাওয়ার-ক্ষুধার্ত সমাধানের প্রয়োজনীয়তা হ্রাস করে। এটি একটি পুরানো এপিআইয়ের ত্রুটিগুলি সমাধান করে যা স্ক্রিন চালু রাখার মধ্যেই সীমাবদ্ধ ছিল এবং এতে বেশ কয়েকটি সুরক্ষা এবং গোপনীয়তা সমস্যা ছিল।
স্ক্রিন ওয়েক লক API-এর জন্য প্রস্তাবিত ব্যবহারের কেস
দ্য গার্ডিয়ান কর্তৃক তৈরি একটি ওয়েব অ্যাপ, রিওরান , একটি নিখুঁত ব্যবহারের ক্ষেত্রে ছিল (যদিও এটি এখন আর উপলব্ধ নেই)। অ্যাপটি আপনাকে ২০১৬ সালের অলিম্পিক ম্যারাথনের রুট অনুসরণ করে রিওতে একটি ভার্চুয়াল অডিও ট্যুরে নিয়ে যাবে। ওয়েক লক ছাড়া, ট্যুর চলাকালীন ব্যবহারকারীদের স্ক্রিন ঘন ঘন বন্ধ হয়ে যেত, যার ফলে এটি ব্যবহার করা কঠিন হয়ে পড়ত।
অবশ্যই, আরও অনেক ব্যবহারের ঘটনা রয়েছে:
- একটি রেসিপি অ্যাপ যা কেক বেক করার সময় বা রাতের খাবার রান্না করার সময় স্ক্রিন চালু রাখে
- একটি বোর্ডিং পাস বা টিকিট অ্যাপ যা বারকোড স্ক্যান না হওয়া পর্যন্ত স্ক্রিনটি চালু রাখে।
- একটি কিয়স্ক-স্টাইলের অ্যাপ যা স্ক্রিনটি ক্রমাগত চালু রাখে
- একটি ওয়েব-ভিত্তিক উপস্থাপনা অ্যাপ যা উপস্থাপনার সময় স্ক্রিন চালু রাখে।
স্ক্রিন ওয়েক লক API ব্যবহার করুন
স্ক্রিন ওয়েক লক এপিআই কেবল এক ধরণের ওয়েক লক প্রদান করে: screen ।
screen ওয়েক লক
একটি screen ওয়েক লক ডিভাইসের স্ক্রিন বন্ধ হতে বাধা দেয় যাতে ব্যবহারকারী স্ক্রিনে প্রদর্শিত তথ্য দেখতে পারেন।
একটি স্ক্রিন ওয়েক লক পান
স্ক্রিন ওয়েক লকের অনুরোধ করতে, আপনাকে navigator.wakeLock.request() পদ্ধতিতে কল করতে হবে যা একটি WakeLockSentinel অবজেক্ট ফেরত দেয়। ঐচ্ছিকভাবে, আপনি একটি প্যারামিটার হিসাবে screen টাইপটি পাস করতে পারেন। ব্রাউজার বিভিন্ন কারণে অনুরোধটি প্রত্যাখ্যান করতে পারে (উদাহরণস্বরূপ, কারণ ব্যাটারি চার্জের স্তর খুব কম), তাই কলটি একটি try...catch বিবৃতিতে মোড়ানো একটি ভাল অভ্যাস। ব্যর্থতার ক্ষেত্রে ব্যতিক্রমের বার্তায় আরও বিশদ থাকে।
একটি স্ক্রিন ওয়েক লক প্রকাশ করুন
আপনার স্ক্রিন ওয়েক লকটি রিলিজ করার জন্য একটি উপায়ও প্রয়োজন, যা WakeLockSentinel অবজেক্টের release() পদ্ধতিটি কল করে অর্জন করা হয়। যদি আপনি WakeLockSentinel এর কোনও রেফারেন্স সংরক্ষণ না করেন, তাহলে লকটি ম্যানুয়ালি রিলিজ করার কোনও উপায় নেই, তবে বর্তমান ট্যাবটি অদৃশ্য হয়ে গেলে এটি রিলিজ হবে।
নির্দিষ্ট সময় অতিবাহিত হওয়ার পর যদি আপনি স্বয়ংক্রিয়ভাবে স্ক্রিন ওয়েক লকটি রিলিজ করতে চান, তাহলে আপনি window.setTimeout() ব্যবহার করে release() কল করতে পারেন, যেমনটি উদাহরণে দেখানো হয়েছে।
// The wake lock sentinel.
let wakeLock = null;
// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
try {
wakeLock = await navigator.wakeLock.request();
wakeLock.addEventListener('release', () => {
console.log('Screen Wake Lock released:', wakeLock.released);
});
console.log('Screen Wake Lock released:', wakeLock.released);
} catch (err) {
console.error(`${err.name}, ${err.message}`);
}
};
// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
wakeLock.release();
wakeLock = null;
}, 5000);
WakeLockSentinel অবজেক্টের released নামে একটি প্রপার্টি আছে যা নির্দেশ করে যে একটি সেন্টিনেল ইতিমধ্যেই মুক্তি পেয়েছে কিনা। এর মান প্রাথমিকভাবে false হয় এবং "release" ইভেন্টটি প্রেরণের পরে true পরিবর্তিত হয়। এই প্রপার্টি ওয়েব ডেভেলপারদের ম্যানুয়াল ট্র্যাকিং ছাড়াই জানতে সাহায্য করে যে কখন একটি লক মুক্তি পেয়েছে।
স্ক্রিন ওয়েক লকের জীবনচক্র
যখন আপনি স্ক্রিন ওয়েক লক ডেমো ব্যবহার করেন, তখন আপনি দেখতে পাবেন যে স্ক্রিন ওয়েক লকগুলি পৃষ্ঠার দৃশ্যমানতার প্রতি সংবেদনশীল। এর অর্থ হল যখন আপনি একটি ট্যাব বা উইন্ডো মিনিমাইজ করেন, অথবা এমন একটি ট্যাব বা উইন্ডো থেকে স্যুইচ করেন যেখানে স্ক্রিন ওয়েক লক সক্রিয় থাকে তখন স্ক্রিন ওয়েক লক স্বয়ংক্রিয়ভাবে প্রকাশিত হয়।
স্ক্রিন ওয়েক লকটি পুনরায় অর্জন করতে, visibilitychange ইভেন্টটি শুনুন এবং যখন এটি ঘটে তখন একটি নতুন স্ক্রিন ওয়েক লক অনুরোধ করুন:
const handleVisibilityChange = async () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
await requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
সিস্টেম রিসোর্সের উপর আপনার প্রভাব কমিয়ে আনুন
আপনার অ্যাপে কি স্ক্রিন ওয়েক লক ব্যবহার করা উচিত? আপনি কোন পদ্ধতিটি গ্রহণ করবেন তা আপনার অ্যাপের চাহিদার উপর নির্ভর করে। যাই হোক না কেন, সিস্টেম রিসোর্সের উপর এর প্রভাব কমাতে আপনার অ্যাপের জন্য সবচেয়ে হালকা পদ্ধতিটি ব্যবহার করা উচিত।
আপনার অ্যাপে স্ক্রিন ওয়েক লক যোগ করার আগে, বিবেচনা করুন যে আপনার ব্যবহারের সমস্যাগুলি নিম্নলিখিত বিকল্প সমাধানগুলির মধ্যে একটি দিয়ে সমাধান করা যেতে পারে কিনা:
- যদি আপনার অ্যাপটি দীর্ঘ সময় ধরে ডাউনলোড করে, তাহলে ব্যাকগ্রাউন্ড ফেচ ব্যবহার করার কথা বিবেচনা করুন।
- যদি আপনার অ্যাপটি কোনও বহিরাগত সার্ভার থেকে ডেটা সিঙ্ক্রোনাইজ করে, তাহলে ব্যাকগ্রাউন্ড সিঙ্ক ব্যবহার করার কথা বিবেচনা করুন।
ডেমো
স্ক্রিন ওয়েক লকের ডেমো এবং ডেমো সোর্সটি দেখুন। লক্ষ্য করুন কিভাবে ট্যাব বা অ্যাপ স্যুইচ করার সময় স্ক্রিন ওয়েক লক স্বয়ংক্রিয়ভাবে প্রকাশিত হয়।
ওএস টাস্ক ম্যানেজারে স্ক্রিন ওয়েক লক
আপনার অপারেটিং সিস্টেমের টাস্ক ম্যানেজার ব্যবহার করে আপনি দেখতে পারেন যে কোনও অ্যাপ্লিকেশন আপনার কম্পিউটারকে ঘুম থেকে আটকাচ্ছে কিনা। ভিডিওটিতে macOS অ্যাক্টিভিটি মনিটর দেখানো হয়েছে যা নির্দেশ করে যে Chrome-এর একটি সক্রিয় স্ক্রিন ওয়েক লক রয়েছে যা সিস্টেমকে জাগিয়ে রাখে।
প্রতিক্রিয়া
আপনি কি Chrome এর বাস্তবায়নে কোন বাগ খুঁজে পেয়েছেন? নাকি বাস্তবায়নটি স্পেসিফিকেশন থেকে আলাদা?
- একটি বাগ ফাইল করুন । যতটা সম্ভব বিস্তারিত তথ্য অন্তর্ভুক্ত করুন। বাগ পুনরুৎপাদনের জন্য স্পষ্ট নির্দেশাবলী প্রদান করুন এবং Components কে
Blink>WakeLockএ সেট করুন।
রিসোর্স
- স্পেসিফিকেশন প্রার্থীর সুপারিশ | সম্পাদকের খসড়া
- স্ক্রিন ওয়েক লকের ডেমো | স্ক্রিন ওয়েক লকের ডেমো উৎস
- ট্র্যাকিং বাগ
- ChromeStatus.com এন্ট্রি
- ওয়েক লক এপিআই নিয়ে পরীক্ষা-নিরীক্ষা করা হচ্ছে
- ব্লিঙ্ক কম্পোনেন্ট:
Blink>WakeLock
স্বীকৃতি
টাস্ক ম্যানেজার ভিডিও সৌজন্যে হেনরি লিম ।