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

প্রকাশিত: ১৮ মে, ২০২০

Browser Support

  • ক্রোম: ৯৪।
  • প্রান্ত: ১১৪।
  • ফায়ারফক্স: সমর্থিত নয়।
  • সাফারি: সমর্থিত নয়।

Source

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

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

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

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

API ব্যবহার করুন

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

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

API ধারণা

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

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

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

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

অনুমতির জন্য অনুরোধ করুন এবং তাৎক্ষণিক করুন

Idle Detection 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 সাপোর্ট

আপনি DevTools এ নিষ্ক্রিয় ইভেন্টগুলি অনুকরণ করতে পারেন, আসলে নিষ্ক্রিয় না হয়েও। DevTools এ, Sensors ট্যাবটি খুলুন এবং Emulate Idle Detector state সন্ধান করুন। আপনি ভিডিওতে বিভিন্ন বিকল্প দেখতে পারেন।

DevTools-এ আইডল ডিটেক্টর স্টেট এমুলেশন।

পুতুলের জন্য সমর্থন

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

ডেমো

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

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

পলিফিল

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

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

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

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

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

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

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

বাস্তবায়নে কোনও সমস্যার কথা জানান

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

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

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

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

সহায়ক লিঙ্ক

স্বীকৃতি

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