ওয়েব অনুমতি সেরা অনুশীলন

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

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

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

সর্বোত্তম অনুশীলনকে উৎসাহিত করা

ব্যবহারকারীর কোনো কার্যকলাপের পরে অনুমতি চান, যখন ব্যবহারকারীরা বুঝতে পারেন যে আপনি কেন অনুমতি চাইছেন এবং অনুমতি দিলে তারা কী সুবিধা পাবেন।

সম্ভব হলে, একই কাজ সম্পন্ন করার জন্য বিকল্প উপায় প্রদান করুন। সঠিক মুহূর্তে জিজ্ঞাসা করার বিষয়টি সতর্কতার সাথে বেছে নিলে, আপনার ব্যবহারকারীরা এমন একটি অবরুদ্ধ অবস্থায় পড়ার সম্ভাবনা কমে যায়, যেখান থেকে বেরিয়ে আসা কঠিন হয়ে পড়ে।

পৃষ্ঠা লোড হওয়ার সময় বা ব্যবহারকারীর হস্তক্ষেপ ছাড়া কখনও জিজ্ঞাসা করবেন না।

পেজ লোড হওয়ার সময় অনুমতি চাওয়াটা অনেকটা কোনো দোকানে ঢোকার সময় একজন গ্রাহকের কাছে সংবেদনশীল তথ্য চাওয়ার মতো। নিউজলেটার সাইনআপ এবং কুকি সম্মতির মতো আরও কয়েকটি অনুরোধের মধ্যে একটি অনুমতির অনুরোধ দেখাটা একটি অস্বস্তিকর অভিজ্ঞতা। ব্যবহারকারীরা বুঝতে পারবেন না কেন তাদের কাছে এটি চাওয়া হচ্ছে এবং এতে তাদের কী লাভ হবে

আপনার ওয়েব অ্যাপ্লিকেশনটি কোনো নির্দিষ্ট সক্ষমতার অ্যাক্সেস ছাড়া কাজ করতে না পারলেও, ব্যবহারকারীদের এটি কেন প্রয়োজন তা বোঝার সুযোগ দিন। উদাহরণস্বরূপ, অনুমতি চাওয়ার আগে বলুন কেন এটি প্রয়োজন এবং ব্যবহারকারীদের একটি বিকল্প দিন (যেমন, একই কার্যকারিতা সম্পন্ন করার জন্য বিকল্প উপায় প্রদান করে )। পেজ লোড হওয়ার মুহূর্তের চেয়ে অনুমতি চাওয়ার জন্য যদি আপনি আরও ভালো কোনো মুহূর্ত খুঁজে না পান, তবে এই গাইডের পরবর্তী অংশে কয়েকটি উদাহরণ দেওয়া আছে।

ব্যবহারকারীর পূর্ব-অংশগ্রহণ ছাড়া অনুমতি চাওয়াও অকার্যকর। এটি ক্ষণস্থায়ী ব্যবহারকারী সক্রিয়করণ (transient user activation) নামে পরিচিত। ক্রোম টেলিমেট্রি থেকে দেখা যায় যে, ডেস্কটপে ৭৭% অনুমতির অনুরোধ ব্যবহারকারীর কোনো ইচ্ছার সংকেত ছাড়াই দেখানো হয় এবং ফলস্বরূপ, এই ধরনের অনুরোধের মাত্র ১২% অনুমোদিত হয়। ব্যবহারকারীর অংশগ্রহণের পর, অনুমোদনের হার বেড়ে ৩০% হয়।

ব্যবহারকারী পৃষ্ঠাটির সাথে মিথস্ক্রিয়া করার পরেই কেবল অনুমতি চান।

ব্যবহারকারীরা কারণটি বুঝতে পারলেই কেবল জিজ্ঞাসা করুন।

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

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

বিকল্প প্রদান করুন

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

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

একটি কার্যকরী কৌশল হলো, বিকল্প UI-কে এই ব্যাখ্যা হিসেবেও ব্যবহার করা যে কেন এই অ্যাক্সেসটি সুবিধাজনক হতে পারে। যে ব্যবহারকারীরা জিওলোকেশন এপিআই চালু করার বাটনের পাশে অবস্থান লেখার বিকল্প দেখেন, তাঁরা নিজেদের নিয়ন্ত্রণে আছেন বলে মনে করেন, কারণ তাঁরা বোঝেন যে তাঁরা নিজেদের ঠিকানা টাইপ করতে পারবেন। একইভাবে, যদি পুশ বা ইমেলের মাধ্যমে নোটিফিকেশন গ্রহণ করা, অথবা ক্যামেরা ও মাইক্রোফোনের অ্যাক্সেস না দিয়ে কোনো মিটিংয়ে যোগ দেওয়ার মধ্যে একটি বেছে নেওয়ার সুযোগ থাকে, তবে ব্যবহারকারীরা এর সুবিধা-অসুবিধাগুলো বুঝতে পারেন।

অবরুদ্ধ অবস্থা এড়িয়ে চলুন

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

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

তৃতীয় পক্ষের বিষয়বস্তুর প্রতি মনোযোগ দিন।

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

কখন অনুমতি চাইতে হবে

সর্বোত্তম পন্থা অনুসরণ করে অনুমতি চাওয়ার জন্য উপযুক্ত কয়েকটি মুহূর্তের উদাহরণ নিচে দেওয়া হলো:

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

কোড প্যাটার্ন

এপিআই-এর উপর নির্ভর করে, এটি ব্যবহারের অনুমতি বিভিন্ন উপায়ে দেওয়া হয়। কিছু পুরোনো এপিআই এমন একটি মডেল ব্যবহার করে যেখানে আপনি প্রথমবার এপিআইটি ব্যবহার করার চেষ্টা করলে ব্রাউজার স্বয়ংক্রিয়ভাবে অনুমতি চেয়ে নেয়। এর একটি উদাহরণ হলো জিওলোকেশন এপিআই, যখন navigator.geolocation.getCurrentPosition() কল করা হয়।

try {
  navigator.geolocation.getCurrentPosition((pos) => console.log(pos));
} catch (error) {
  console.error(error);
}

অন্যান্য এপিআই এমন একটি মডেল ব্যবহার করে যেখানে প্রথমে একটি স্ট্যাটিক মেথডের মাধ্যমে স্পষ্টভাবে অনুমতির জন্য অনুরোধ করতে হয়। এর একটি ভালো উদাহরণ হলো নোটিফিকেশন চালু করার জন্য Notification.requestPermission() , অথবা তুলনামূলকভাবে কম ব্যবহৃত DeviceOrientationEvent.requestPermission() , যা Device Orientation Events API-এর একটি অংশ।

কিছু ব্রাউজার স্বয়ংক্রিয়ভাবে নির্দিষ্ট এপিআই (API)-এর অনুমতি দিয়ে থাকে। উদাহরণস্বরূপ, ক্রোম সবসময় ডিভাইসের ওরিয়েন্টেশন অ্যাক্সেস করার অনুমতি দেয়, অন্যদিকে সাফারি একটি প্রম্পট দেখায়।

const result = await DeviceOrientationEvent.requestPermission();
console.log(`The user's decision when prompted to use the Device Orientation
Events API was: ${result}.`);
if (result === 'granted') {
  /* Use the API. */
}

অনুমতির অবস্থা পরীক্ষা করুন

Browser Support

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

Source

আপনি কোনো নির্দিষ্ট API ব্যবহার করতে পারবেন কিনা তা পরীক্ষা করতে, Permissions API-এর navigator.permissions.query() মেথডটি ব্যবহার করুন।

const result = await navigator.permissions.query({ name: 'geolocation' });
console.log(`The result of querying for the Geolocation API is:
${result.state}.`);
if (result.state === 'granted') {
  // Use the API.
}

ব্যবহারকারীদের অবরুদ্ধ অবস্থা থেকে পুনরুদ্ধার করতে সাহায্য করুন

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

পারমিশন স্টেট পরিবর্তন করার সঠিক পদ্ধতি ব্রাউজার ভেদে ভিন্ন হয়, তাই সর্বাধিক ব্যবহৃত ব্রাউজারগুলোর ইউজার এজেন্ট স্ট্রিং অনুযায়ী উপযুক্ত বর্ণনা দেওয়া হলো।

ক্রোমে, ব্যবহারকারীরা অ্যাড্রেস বারে থাকা ‘ভিউ সাইট ইনফরমেশন > সাইট সেটিংস’ থেকে অনুমতি পরিবর্তন করতে পারেন। কিছু ক্ষেত্রে, কোনো একটি ক্ষমতা ব্যবহার করার আগে তাদের পৃষ্ঠাটি রিলোড করতে হতে পারে। সেক্ষেত্রে, উইন্ডোর উপরের দিকে একটি মেসেজ বার প্রদর্শিত হয়, যা সাইটটি রিলোড করার প্রস্তাব দেয়।

ক্রোম ব্রাউজারে সাইট নিয়ন্ত্রণ।

সাইট কন্ট্রোল ব্যবহার করে অনুমতি পরিবর্তন করার পর রিলোড করার জন্য অনুরোধ।

অনুমতি নিয়ন্ত্রণের জন্য অনুরূপ ইউজার ইন্টারফেস অন্যান্য ব্রাউজারেও রয়েছে, যেমন ফায়ারফক্সে