অনুমতি প্রম্পট হল শক্তিশালী ক্ষমতা রক্ষা করার জন্য ওয়েবের প্রধান প্রক্রিয়া যা ব্যবহারকারীদের গোপনীয়তা এবং নিরাপত্তার জন্য সম্ভাব্য বিপজ্জনক। অনুমতি প্রম্পট সহ, ব্রাউজারগুলি নিশ্চিত করে যে কোনও ব্যবহারকারী অনুরোধকারী ওয়েবসাইটটিকে প্রশ্নে থাকা সক্ষমতা অ্যাক্সেস করতে দিতে চায়। মিডিয়া ক্যাপচার (ক্যামেরা এবং মাইক্রোফোন), জিওলোকেশন, স্টোরেজ অ্যাক্সেস, MIDI, এবং বিজ্ঞপ্তি সহ বেশ কয়েকটি API-এর জন্য অনুমতি প্রম্পট ব্যবহার করা হয় (আরো তথ্যের জন্য MDN-এ অনুমতি API ডকুমেন্টেশন দেখুন)।
এই নির্দেশিকাটি Chrome ব্যবহারের পরিসংখ্যান এবং ব্যবহারকারীর গবেষণার উপর ভিত্তি করে ব্যবহারকারীদের অনুমতি প্রম্পট দেখানোর জন্য সর্বোত্তম অনুশীলনের রূপরেখা দেয়৷ এই সর্বোত্তম অনুশীলনগুলি অনুসরণ করার সময়, ব্যবহারকারীদের কম অপ্রয়োজনীয় প্রম্পটের সম্মুখীন হওয়া উচিত, যার ফলে ডেভেলপাররা কম "ব্লক" সিদ্ধান্ত নিতে পারে। নিবন্ধটি অনুমতি-গেটেড এপিআইগুলির সাথে কাজ করার জন্য কিছু কোড প্যাটার্ন এবং ব্যবহারকারীদের ব্লক করা অবস্থা থেকে পুনরুদ্ধার করতে সহায়তা করার জন্য সর্বোত্তম অনুশীলন দিয়ে শেষ হয়।
সর্বোত্তম অনুশীলনের জন্য অনুরোধ করা
ব্যবহারকারীর ইন্টারঅ্যাকশনের পরে আপনার অনুমতি চাওয়া উচিত, এমন মুহূর্তে যেখানে ব্যবহারকারীরা বুঝতে পারবেন আপনি কেন জিজ্ঞাসা করছেন এবং অনুমতি দিলে তারা কী সুবিধা পাবে। যেখানে সম্ভব, আপনার ব্যবহারকারীদের একই কার্যকারিতা সম্পন্ন করার জন্য একটি বিকল্প উপায় ব্যবহার করার অনুমতি দেওয়া উচিত। একটি সাধারণ নির্দেশিকা হিসাবে, আপনি যে মুহূর্তগুলিতে সতর্কতার সাথে জিজ্ঞাসা করছেন তা বেছে নিয়ে কম ঘন ঘন অনুমতি চাওয়া আপনার ব্যবহারকারীদের একটি অবরুদ্ধ অবস্থায় যাওয়ার সম্ভাবনা কমিয়ে দেয় যা থেকে পুনরুদ্ধার করা কঠিন। নিম্নলিখিত সর্বোত্তম অনুশীলনগুলি এই পরামর্শগুলির প্রতিটিতে আরও বিশদ বিবরণ দেয়৷
পৃষ্ঠা লোড করার সময় বা ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়া কখনই জিজ্ঞাসা করবেন না
পৃষ্ঠা লোড করার সময় ব্যবহারকারীদের অনুমতি চাওয়া মানে একজন গ্রাহকের কাছে একটি সংবেদনশীল তথ্যের জন্য জিজ্ঞাসা করার সমতুল্য যখন তারা একটি ফিজিক্যাল স্টোরে যায়। একটি অনুমতি প্রম্পট দেখা (সম্ভবত নিউজলেটার সাইনআপ এবং কুকি সম্মতির জন্য অন্যান্য প্রম্পটের মধ্যে) একটি খুব বিরক্তিকর অভিজ্ঞতা। ব্যবহারকারীরা বুঝতে পারবেন না কেন তাদের জিজ্ঞাসা করা হচ্ছে এবং তারা কীভাবে উপকৃত হবে ।
এমনকি যদি আপনার ওয়েব অ্যাপ্লিকেশনটি একটি নির্দিষ্ট ক্ষমতার অ্যাক্সেস ছাড়া কাজ করতে না পারে, তবে আপনার ব্যবহারকারীদের এটি কেন প্রয়োজন তা বোঝার সুযোগ দেওয়া উচিত। উদাহরণ স্বরূপ, আপনার নিজস্ব একটি প্রম্পটের সাথে অনুমতি প্রম্পটটি প্রিফেস করে যা প্রয়োজন ব্যাখ্যা করে এবং ব্যবহারকারীদের একটি পছন্দ দেয় (উদাহরণস্বরূপ, যেখানে সম্ভব, একই কার্যকারিতা সম্পন্ন করার বিকল্প উপায় প্রদান করে )। আপনি যদি পৃষ্ঠা লোড করার চেয়ে অনুমতি চাওয়ার জন্য একটি ভাল মুহূর্ত ভাবতে না পারেন, তাহলে এই নির্দেশিকাটিতে পরে কয়েকটি উদাহরণ রয়েছে।
অনুমতি চাওয়ার জন্য অনুরূপ একটি খারাপ পরিস্থিতি পূর্বে ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই (যা ক্ষণস্থায়ী ব্যবহারকারী সক্রিয়করণ নামেও পরিচিত)। ক্রোম টেলিমেট্রি দেখায় যে ডেস্কটপ ক্রোমে 77% অনুমতি প্রম্পটগুলি ব্যবহারকারীর অভিপ্রায়ের খুব প্রাথমিক সংকেত ছাড়াই দেখানো হয় এবং ফলস্বরূপ এই ধরনের প্রম্পটের মাত্র 12% অনুমোদিত হয়। ব্যবহারকারীর ইন্টারঅ্যাকশনের পরে, হার 30% বৃদ্ধি করার অনুমতি দিন। সুতরাং, ব্যবহারকারী পৃষ্ঠার সাথে কোনও আকারে ইন্টারঅ্যাক্ট করার পরেই অনুমতি চাইবেন৷
শুধুমাত্র তখনই জিজ্ঞাসা করুন যখন ব্যবহারকারীরা বুঝতে পারবেন আপনি কেন জিজ্ঞাসা করছেন
অনুমতি সিদ্ধান্ত প্রায়ই গোপনীয়তা সিদ্ধান্ত. প্রাসঙ্গিক অখণ্ডতা কাঠামোর উপর ভিত্তি করে, আমরা জানি যে গোপনীয়তার সিদ্ধান্তগুলি অত্যন্ত প্রাসঙ্গিক। কেন একটি অ্যাক্সেস প্রয়োজনীয় তা বোঝা এর একটি মূল দিক বিবেচনা করা যেতে পারে। অতএব, ব্যবহারকারীদের মান প্রদান করার জন্য আপনার প্রয়োজন শুধুমাত্র সেই ক্ষমতাগুলির অনুরোধ করা উচিত (এবং যেখানে ব্যবহারকারীরা আপনার সাথে একমত হতে পারে যে তারা প্রকৃতপক্ষে মূল্য পাবে)। উপরন্তু, আপনি একটি মুহূর্তে অনুমতি চাওয়া উচিত যেখানে এটি ব্যবহারকারীর কাছে স্পষ্ট হয় কেন সক্ষমতা সহায়ক। উদ্দেশ্য হল আপনার ব্যবহারকারীদের ব্যবহারের প্রসঙ্গ বুঝতে যতটা সম্ভব সহজ করা।
আমাদের ব্যবহারকারী গবেষণা দেখায় যে ব্যবহারকারীরা যখন বুঝতে পারে কেন একটি সাইট অ্যাক্সেসের জন্য জিজ্ঞাসা করছে এবং একটি সুবিধা উপলব্ধি করে তখন তারা অ্যাক্সেসের অনুমতি দেওয়ার সম্ভাবনা বেশি থাকে। আমরা আরও দেখতে পাই যে ব্যবহারকারীরা অ্যাক্সেসের অনুমতি দেওয়ার বিনিময়ে তারা কী মূল্য পেতে পারে তা আরও ভালভাবে বোঝার জন্য প্রথমে অপরিচিত সাইটগুলি অন্বেষণ করার প্রত্যাশা করে। তারা প্রায়শই এই সময়ের মধ্যে অনুমতি প্রম্পটগুলিকে বরখাস্ত করবে বা উপেক্ষা করবে। এককালীন অনুমতি সহ, তারা প্রথমে একটি একক দর্শনের অনুমতি দিতে পারে। আপনার আবেদন এই আচরণ সমর্থন করতে হবে.
যেখানে সম্ভব একই কার্যকারিতা সম্পন্ন করার বিকল্প উপায় প্রদান করুন
কিছু ক্ষমতার ফলাফল ব্যবহারকারীদের জন্য সহায়ক নাও হতে পারে। উদাহরণস্বরূপ, একটি GPS সেন্সর ছাড়া একটি ডেস্কটপ ডিভাইসের ভূ-অবস্থান ভুল অবস্থান ফেরত দিতে পারে কারণ সেই ব্যক্তি একটি VPN এর সাথে সংযুক্ত। অন্যান্য ব্যবহারকারীরা ক্লিপবোর্ড অ্যাক্সেস প্রদান করতে নাও চাইতে পারে কারণ তারা নিয়ন্ত্রণে থাকতে পছন্দ করে এবং ম্যানুয়ালি কী সমন্বয়ের মাধ্যমে এই ইভেন্টগুলিকে ট্রিগার করতে পছন্দ করে। এই ধরনের পরিস্থিতিতে, একই ফলাফলগুলি সম্পন্ন করার জন্য একটি বিকল্প উপায় প্রদান করা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি ভূ-অবস্থানের অনুমতির অনুরোধ করা হয়, তাহলে একটি পাঠ্য ক্ষেত্র অফার করুন যেখানে আপনার ব্যবহারকারীরা একটি জিপ কোড বা ঠিকানা লিখতে পারে। ক্লিপবোর্ডের সাথে, নিশ্চিত করুন যে অনুলিপি করার উপাদানগুলিও একটি কী-সংমিশ্রণ বা প্রসঙ্গ মেনুর মাধ্যমে নির্বাচন এবং অনুলিপি করা যেতে পারে। বিজ্ঞপ্তিগুলির সাথে, অফার করুন যে লোকেরা পুশ বিজ্ঞপ্তির পরিবর্তে ইমেলগুলি গ্রহণ করে৷
কেন অ্যাক্সেস উপকারী হতে পারে তার ব্যাখ্যা হিসাবে বিকল্প UI ব্যবহার করা একটি দরকারী প্যাটার্ন। ভৌগলিক অবস্থান API-কে ট্রিগার করে এমন একটি বোতামের পাশে একটি অবস্থান প্রবেশ করার বিকল্প দেখতে ব্যবহারকারীরা কী ঘটতে চলেছে তা নিয়ন্ত্রণে অনুভব করবেন, কারণ তারা বোঝেন যে তারা কেবল তাদের ঠিকানা টাইপ করতে পারেন। একইভাবে, যদি পুশ বা ইমেলের মাধ্যমে বিজ্ঞপ্তিগুলি গ্রহণ করা বা ক্যামেরা এবং মাইক্রোফোন অ্যাক্সেসের অনুমতি না দিয়ে একটি মিটিংয়ে যোগদানের মধ্যে একটি পছন্দ থাকে, ব্যবহারকারীরা স্বাভাবিকভাবেই বুঝতে পারে যে তারা যে ট্রেডঅফ করছে।
নিজেকে একটি অবরুদ্ধ অবস্থায় নিয়ে যাবেন না, এটি থেকে পুনরুদ্ধার করা কঠিন
একবার একজন ব্যবহারকারী স্থায়ীভাবে অনুমতি-প্রস্তুত ক্ষমতা অ্যাক্সেস করার অনুমতি না দেওয়ার সিদ্ধান্ত নিলে, ব্রাউজারগুলি সেই সিদ্ধান্তকে সম্মান করে। যদি অ্যাক্সেসের জন্য প্রম্পট করা সম্ভব হয়, তবে অপ্রয়োজনীয় সাইটগুলি ব্যবহারকারীদের প্রম্পট দিয়ে বোমাবর্ষণ চালিয়ে যাবে। অতএব, একটি সক্ষমতার অবরুদ্ধ অবস্থা থেকে পুনরুদ্ধার করতে ইচ্ছাকৃতভাবে ব্যবহারকারীর কাছ থেকে কিছুটা প্রচেষ্টা লাগে। তদনুসারে, এমন পরিস্থিতিতে ব্যবহারকারীদের অনুমতি চাওয়া এড়িয়ে চলুন যেখানে সম্ভবত অনেক ব্যবহারকারী অ্যাক্সেসের অনুমতি দেবেন না।
এটি করার একটি সাধারণ উপায় হল একটি তথাকথিত প্রি-প্রম্পট ব্যবহার করা, যেখানে আপনি আপনার ব্যবহারকারীদের ব্যাখ্যা করেন কী ঘটতে চলেছে এবং কেন আপনার অ্যাপ্লিকেশনের জন্য আপনি অনুরোধ করতে যাচ্ছেন সেই ক্ষমতার প্রয়োজন৷ শুধুমাত্র যখন ব্যবহারকারীরা এই ধরনের প্রি-প্রম্পটে ইতিবাচক প্রতিক্রিয়া দেখান তখনই আপনার ব্রাউজারের অনুমতি প্রম্পট ট্রিগার করা উচিত। এমন পরিস্থিতি রয়েছে যেখানে ব্যবহারকারীদের বৈধভাবে সেই অবস্থা থেকে পুনরুদ্ধার করতে হবে। এই বিষয়ে আরও জানতে ব্যবহারকারীদের ব্লক করা অবস্থা থেকে পুনরুদ্ধার করতে সহায়তা করুন বিভাগটি দেখুন।
তৃতীয় পক্ষের সামগ্রীতে মনোযোগ দিন
অনুমতির অনুরোধের একটি অপ্রত্যাশিত উত্স রয়েছে যা সম্পর্কে সচেতন হতে হবে। আপনি যদি আপনার সাইটে তৃতীয় পক্ষের স্ক্রিপ্টগুলি অন্তর্ভুক্ত করেন তবে তারা অনুমতির প্রম্পট ট্রিগার করতে পারে যা আপনি দেখাতে চাননি। এটি আপনার ওয়েবসাইটের ব্যবহারকারীদের অভিজ্ঞতাকে প্রভাবিত করতে পারে, বিশেষ করে যদি এই ধরনের প্রম্পটগুলি ইতিমধ্যে বর্ণিত সেরা অনুশীলনগুলি অনুসরণ না করে। আপনার ব্যবহারকারীদের অভিজ্ঞতার নিয়ন্ত্রণে থাকার জন্য, আপনার নিজের কোডে যোগ করা যেকোনো তৃতীয় পক্ষের লাইব্রেরি এবং স্ক্রিপ্টের ডকুমেন্টেশন সাবধানে পড়া উচিত।
কখন অনুমতি চাইতে হবে
ইতিমধ্যে বর্ণিত সেরা অনুশীলনগুলি অনুসরণ করে অনুমতি চাওয়ার জন্য এখানে কিছু মুহুর্তের উদাহরণ রয়েছে:
- একজন ব্যবহারকারী একটি বোতামে ক্লিক করার পরে ম্যানুয়ালি একটি ঠিকানা প্রবেশের জন্য একটি ফর্ম ক্ষেত্রের পাশে "আমার অবস্থান ব্যবহার করুন" বলে।
- একজন ব্যবহারকারী একটি ভিডিও চ্যানেল বা পোস্টে সদস্যতা নেওয়ার পরে এবং একটি ডায়ালগে একটি ইতিবাচক বোতামে ক্লিক করার পরে যে আপডেটগুলি তাদের ফোন বা ডেস্কটপে ইমেল বা বিজ্ঞপ্তি হিসাবে বিতরণ করা যেতে পারে।
- একজন ব্যবহারকারী এমন একটি পৃষ্ঠায় পৌঁছানোর পরে যা তাদের একটি ভিডিও কলে যোগদানের জন্য প্রস্তুত করে এবং ইতিবাচকভাবে উত্তর দেয় যে তারা একটি প্রি-প্রম্পটে দেখা এবং শুনতে চায় ( Google Meet থেকে এই কেস স্টাডিটি দেখুন)।
অনুমতি চাওয়ার জন্য কোড প্যাটার্ন
API-এর উপর নির্ভর করে একটি API ব্যবহার করার অনুমতি পাওয়া বিভিন্ন মাধ্যমে ঘটে। কিছু (সাধারণত পুরানো) API এমন একটি মডেল ব্যবহার করে যেখানে আপনি প্রথমবার API ব্যবহার করার চেষ্টা করার সময় ব্রাউজার স্বয়ংক্রিয়ভাবে অনুমতি চায়। navigator.geolocation.getCurrentPosition()
কল করার সময় একটি উদাহরণ হল জিওলোকেশন API।
try {
navigator.geolocation.getCurrentPosition((pos) => console.log(pos));
} catch (error) {
console.error(error);
}
অন্যান্য API গুলি একটি মডেল ব্যবহার করে যেখানে আপনাকে স্পষ্টভাবে একটি স্ট্যাটিক পদ্ধতি ব্যবহার করে প্রথমে অনুমতির অনুরোধ করতে হবে। একটি ভাল উদাহরণ হল Notification.requestPermission()
বিজ্ঞপ্তিগুলিকে অনুমতি দেওয়ার জন্য, অথবা কম সাধারণ DeviceOrientationEvent.requestPermission()
, যা ডিভাইস ওরিয়েন্টেশন ইভেন্ট এপিআই এর অংশ। মনে রাখবেন যে কিছু ব্রাউজার স্বয়ংক্রিয়ভাবে প্রদত্ত API-কে অনুমতি দিতে পারে। উদাহরণস্বরূপ, Chrome সর্বদা একটি ডিভাইসের অভিযোজন অ্যাক্সেসের অনুমতি দেয়, যেখানে Safari একটি প্রম্পট দেখায়।
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. */
}
অনুমতির অবস্থা কীভাবে পরীক্ষা করবেন
আপনি একটি নির্দিষ্ট API ব্যবহার করতে পারেন কিনা তা পরীক্ষা করতে, অনুমতি 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.
}
ব্যবহারকারীদের একটি অবরুদ্ধ অবস্থা থেকে পুনরুদ্ধার করতে সাহায্য করুন
ব্যবহারকারীদের অ্যাক্সেস সমস্যা সমাধানে সহায়তা করার জন্য, সনাক্ত করুন যে তারা অনুমতি API ব্যবহার করে অ্যাক্সেস অবরুদ্ধ করেছে এবং তাদের সেটিংস কীভাবে পরিবর্তন করতে হবে তার একটি নির্দেশিকা অফার করুন৷ উদাহরণস্বরূপ, যখন ব্যবহারকারীরা UI উপাদানগুলির সাথে ইন্টারঅ্যাক্ট করে যা একটি অনুমতি-গেটেড ক্ষমতার সাথে যুক্ত, পূর্ববর্তী বিভাগে বর্ণিত প্যাটার্নটি ব্যবহার করুন এবং একটি সমস্যা সমাধানের ডায়ালগ খুলুন। অনুমতির অবস্থা পরিবর্তন করার সঠিক পদক্ষেপগুলি ব্রাউজার অনুসারে পরিবর্তিত হয়, তাই আপনি ব্যবহারকারী এজেন্ট স্ট্রিং এবং আপনার পণ্যের সবচেয়ে বেশি ব্যবহৃত ব্রাউজারগুলির উপর ভিত্তি করে ম্যাচিং বিবরণ অফার করতে চাইতে পারেন।
ক্রোমে, ব্যবহারকারীদের ঠিকানা বারের বাম দিকে "টিউন" আইকনে ক্লিক করে সাইট কন্ট্রোলে যেতে হবে। এখানে, তারা সংশ্লিষ্ট অনুমতি টগল করতে পারে। কিছু ক্ষেত্রে, সক্ষমতা ব্যবহার করার আগে তাদের পৃষ্ঠাটি পুনরায় লোড করতে হতে পারে। সেক্ষেত্রে, উইন্ডোর উপরের অংশে একটি বার্তা বার দেখাবে যা সংশ্লিষ্ট বোতামে ক্লিক করার সময় পুনরায় লোড করার প্রস্তাব দেয়।
অনুমতি নিয়ন্ত্রণের জন্য অনুরূপ UI অন্যান্য ব্রাউজারে বিদ্যমান (উদাহরণস্বরূপ, দেখুন এটি কিভাবে Firefox এ কাজ করে )।