Idle Detection API দিয়ে নিষ্ক্রিয় ব্যবহারকারীদের সনাক্ত করুন

ব্যবহারকারী কখন সক্রিয়ভাবে তাদের ডিভাইস ব্যবহার করছেন না তা খুঁজে বের করতে নিষ্ক্রিয় সনাক্তকরণ API ব্যবহার করুন।

নিষ্ক্রিয় সনাক্তকরণ API কি?

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

Idle Detection API-এর জন্য প্রস্তাবিত ব্যবহারের ক্ষেত্রে

এই API ব্যবহার করতে পারে এমন সাইটগুলির উদাহরণগুলির মধ্যে রয়েছে:

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

এখনকার অবস্থা

ধাপ স্ট্যাটাস
1. ব্যাখ্যাকারী তৈরি করুন সম্পূর্ণ
2. স্পেসিফিকেশনের প্রাথমিক খসড়া তৈরি করুন সম্পূর্ণ
3. প্রতিক্রিয়া সংগ্রহ করুন এবং ডিজাইনের উপর পুনরাবৃত্তি করুন চলমান
4. মূল বিচার সম্পন্ন
5. লঞ্চ করুন ক্রোমিয়াম 94

কিভাবে Idle Detection API ব্যবহার করবেন

বৈশিষ্ট্য সনাক্তকরণ

নিষ্ক্রিয় সনাক্তকরণ API সমর্থিত কিনা তা পরীক্ষা করতে, ব্যবহার করুন:

if ('IdleDetector' in window) {
  // Idle Detector API supported
}

নিষ্ক্রিয় সনাক্তকরণ API ধারণা

Idle Detection API অনুমান করে যে ব্যবহারকারী, ব্যবহারকারী এজেন্ট (অর্থাৎ ব্রাউজার) এবং ব্যবহৃত ডিভাইসের অপারেটিং সিস্টেমের মধ্যে কিছু স্তরের ব্যস্ততা রয়েছে। এটি দুটি মাত্রায় উপস্থাপন করা হয়:

  • ব্যবহারকারীর নিষ্ক্রিয় অবস্থা: active বা idle : ব্যবহারকারী কিছু সময়ের জন্য ব্যবহারকারী এজেন্টের সাথে ইন্টারঅ্যাক্ট করেছেন বা করেননি।
  • স্ক্রীন নিষ্ক্রিয় অবস্থা: locked বা unlocked : সিস্টেমে একটি সক্রিয় স্ক্রিন লক রয়েছে (যেমন একটি স্ক্রিনসেভার) ব্যবহারকারী এজেন্টের সাথে মিথস্ক্রিয়া প্রতিরোধ করে৷

idle থেকে active পার্থক্য করার জন্য হিউরিস্টিকস প্রয়োজন যা ব্যবহারকারী, ব্যবহারকারী এজেন্ট এবং অপারেটিং সিস্টেম জুড়ে আলাদা হতে পারে। এটি একটি যুক্তিসঙ্গতভাবে মোটা থ্রেশহোল্ড হওয়া উচিত ( নিরাপত্তা এবং অনুমতি দেখুন)।

মডেলটি ইচ্ছাকৃতভাবে নির্দিষ্ট বিষয়বস্তুর সাথে ইন্টারঅ্যাকশনের মধ্যে আনুষ্ঠানিকভাবে পার্থক্য করে না (অর্থাৎ, API ব্যবহার করে একটি ট্যাবে ওয়েবপৃষ্ঠা), সম্পূর্ণরূপে ব্যবহারকারী এজেন্ট বা অপারেটিং সিস্টেম; এই সংজ্ঞা ব্যবহারকারী এজেন্ট ছেড়ে দেওয়া হয়.

নিষ্ক্রিয় সনাক্তকরণ API ব্যবহার করে

নিষ্ক্রিয় সনাক্তকরণ API ব্যবহার করার সময় প্রথম পদক্ষেপ হল 'idle-detection' অনুমতি দেওয়া হয়েছে তা নিশ্চিত করা। যদি অনুমতি না দেওয়া হয়, তাহলে আপনাকে IdleDetector.requestPermission() এর মাধ্যমে অনুরোধ করতে হবে। মনে রাখবেন যে এই পদ্ধতিতে কল করার জন্য একটি ব্যবহারকারীর অঙ্গভঙ্গি প্রয়োজন।

// Make sure 'idle-detection' permission is granted.
const state = await IdleDetector.requestPermission();
if (state !== 'granted') {
  // Need to request permission first.
  return console.log('Idle detection permission not granted.');
}

দ্বিতীয় ধাপ হল IdleDetector ইনস্ট্যান্টিয়েট করা। সর্বনিম্ন threshold হল 60,000 মিলিসেকেন্ড (1 মিনিট)। আপনি অবশেষে IdleDetector এর start() পদ্ধতিতে কল করে নিষ্ক্রিয় সনাক্তকরণ শুরু করতে পারেন। এটি মিলিসেকেন্ডে পছন্দসই নিষ্ক্রিয় threshold সহ একটি বস্তু এবং পরামিতি হিসাবে নিষ্ক্রিয় সনাক্তকরণ বাতিল করতে একটি AbortSignal সহ একটি ঐচ্ছিক signal নেয়৷

try {
  const controller = new AbortController();
  const signal = controller.signal;

  const idleDetector = new IdleDetector();
  idleDetector.addEventListener('change', () => {
    const userState = idleDetector.userState;
    const screenState = idleDetector.screenState;
    console.log(`Idle change: ${userState}, ${screenState}.`);
  });

  await idleDetector.start({
    threshold: 60000,
    signal,
  });
  console.log('IdleDetector is active.');
} catch (err) {
  // Deal with initialization errors like permission denied,
  // running outside of top-level frame, etc.
  console.error(err.name, err.message);
}

আপনি AbortController এর abort() পদ্ধতিতে কল করে নিষ্ক্রিয় সনাক্তকরণ বাতিল করতে পারেন।

controller.abort();
console.log('IdleDetector is stopped.');

DevTools সমর্থন

Chromium 94 থেকে শুরু করে, আপনি আসলে নিষ্ক্রিয় না হয়ে DevTools-এ নিষ্ক্রিয় ইভেন্টগুলি অনুকরণ করতে পারেন৷ DevTools-এ, সেন্সর ট্যাবটি খুলুন এবং ইমুলেট আইডল ডিটেক্টর অবস্থা খুঁজুন। আপনি নীচের ভিডিওতে বিভিন্ন বিকল্প দেখতে পারেন।

DevTools-এ নিষ্ক্রিয় ডিটেক্টর স্টেট এমুলেশন।

পুতুল সমর্থন

Puppeteer সংস্করণ 5.3.1 অনুযায়ী, আপনার ওয়েব অ্যাপের আচরণ কীভাবে পরিবর্তিত হয় তা প্রোগ্রামেটিকভাবে পরীক্ষা করার জন্য আপনি বিভিন্ন নিষ্ক্রিয় অবস্থা অনুকরণ করতে পারেন।

ডেমো

আপনি Ephemeral Canvas ডেমোর সাথে Idle Detection API-কে দেখতে পাবেন যা 60 সেকেন্ডের নিষ্ক্রিয়তার পরে এর বিষয়বস্তু মুছে ফেলে। আপনি কল্পনা করতে পারেন যে এটি একটি ডিপার্টমেন্ট স্টোরে বাচ্চাদের ডুডল করার জন্য স্থাপন করা হচ্ছে।

ক্ষণস্থায়ী ক্যানভাস ডেমো

পলিফিলিং

Idle Detection API-এর কিছু দিক হল polyfillable এবং idle.ts- এর মতো নিষ্ক্রিয় সনাক্তকরণ লাইব্রেরি বিদ্যমান, কিন্তু এই পদ্ধতিগুলি একটি ওয়েব অ্যাপের নিজস্ব বিষয়বস্তুর ক্ষেত্রে সীমাবদ্ধ: ওয়েব অ্যাপের প্রেক্ষাপটে চলমান লাইব্রেরিতে ইনপুট ইভেন্টের জন্য ব্যয়বহুল পোল করতে হবে বা দৃশ্যমানতা পরিবর্তন শুনুন। আরও নিয়ন্ত্রিতভাবে, যদিও, লাইব্রেরিগুলি আজ বলতে পারে না কখন একজন ব্যবহারকারী তার বিষয়বস্তু এলাকার বাইরে নিষ্ক্রিয় থাকে (যেমন, যখন একজন ব্যবহারকারী একটি ভিন্ন ট্যাবে থাকে বা তাদের কম্পিউটার থেকে সম্পূর্ণভাবে লগ আউট করে)।

নিরাপত্তা এবং অনুমতি

Chrome টিম ব্যবহারকারীর নিয়ন্ত্রণ, স্বচ্ছতা এবং ergonomics সহ শক্তিশালী ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্যগুলিতে অ্যাক্সেস নিয়ন্ত্রণে সংজ্ঞায়িত মূল নীতিগুলি ব্যবহার করে নিষ্ক্রিয় সনাক্তকরণ API ডিজাইন এবং প্রয়োগ করেছে৷ এই API ব্যবহার করার ক্ষমতা 'idle-detection' অনুমতি দ্বারা নিয়ন্ত্রিত হয়৷ API ব্যবহার করার জন্য, একটি অ্যাপকে অবশ্যই একটি শীর্ষ-স্তরের সুরক্ষিত প্রেক্ষাপটে চলতে হবে।

ব্যবহারকারী নিয়ন্ত্রণ এবং গোপনীয়তা

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

প্রতিক্রিয়া

Chrome টিম নিষ্ক্রিয় সনাক্তকরণ API এর সাথে আপনার অভিজ্ঞতা সম্পর্কে শুনতে চায়৷

API ডিজাইন সম্পর্কে আমাদের বলুন

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

বাস্তবায়নের সাথে একটি সমস্যা রিপোর্ট করুন

আপনি কি Chrome এর বাস্তবায়নের সাথে একটি বাগ খুঁজে পেয়েছেন? অথবা বাস্তবায়ন বৈশিষ্ট থেকে ভিন্ন? new.crbug.com এ একটি বাগ ফাইল করুন। আপনি যতটা পারেন বিশদ অন্তর্ভুক্ত করতে ভুলবেন না, পুনরুত্পাদনের জন্য সহজ নির্দেশাবলী, এবং উপাদান বাক্সে Blink>Input লিখুন। দ্রুত এবং সহজ রিপ্রো শেয়ার করার জন্য গ্লিচ দুর্দান্ত কাজ করে।

API এর জন্য সমর্থন দেখান

আপনি নিষ্ক্রিয় সনাক্তকরণ API ব্যবহার করার পরিকল্পনা করছেন? আপনার সর্বজনীন সমর্থন Chrome টিমকে বৈশিষ্ট্যগুলিকে অগ্রাধিকার দিতে সাহায্য করে এবং অন্যান্য ব্রাউজার বিক্রেতাদের দেখায় যে তাদের সমর্থন করা কতটা গুরুত্বপূর্ণ৷

  • WICG ডিসকোর্স থ্রেডে আপনি কীভাবে এটি ব্যবহার করার পরিকল্পনা করছেন তা শেয়ার করুন।
  • #IdleDetection হ্যাশট্যাগ ব্যবহার করে @ChromiumDev- এ একটি টুইট পাঠান এবং আপনি এটি কোথায় এবং কীভাবে ব্যবহার করছেন তা আমাদের জানান।

সাহা্য্যকারী লিংক

স্বীকৃতি

নিষ্ক্রিয় সনাক্তকরণ API স্যাম গোটো দ্বারা প্রয়োগ করা হয়েছিল। DevTools সমর্থন মাকসিম সাদিম দ্বারা যোগ করা হয়েছিল। এই নিবন্ধটির পর্যালোচনার জন্য জো মেডলি , কায়স বাস্কস এবং রিলি গ্রান্টকে ধন্যবাদ। নায়কের ছবি আনস্প্ল্যাশে ফার্নান্দো হার্নান্দেজের