بهترین شیوه های مجوزهای وب

درخواست‌های مجوز، سازوکار اصلی وب برای محافظت از کاربران در برابر قابلیت‌های قدرتمندی هستند که می‌توانند برای حریم خصوصی و امنیت آنها خطرناک باشند. مرورگرها قصد دارند تأیید کنند که کاربر قصد دارد قابلیتی را در یک وب‌سایت خاص مجاز کند. شما می‌توانید مجوزها را برای تعدادی از APIها ، از جمله ضبط رسانه (دوربین و میکروفون)، موقعیت جغرافیایی، دسترسی به فضای ذخیره‌سازی، MIDI و اعلان‌ها پیاده‌سازی کنید.

هنگام نمایش درخواست‌های مجوز به کاربران، این شیوه‌ها را که بر اساس آمار استفاده از کروم و تحقیقات کاربران تهیه شده‌اند، رعایت کنید. با رعایت این موارد، کاربران شما با درخواست‌های غیرضروری کمتری مواجه می‌شوند که منجر به کاهش تصمیمات مسدودسازی می‌شود.

این سند با برخی الگوهای کد برای APIهای دارای مجوز و نحوه کمک به کاربران برای بازیابی از حالت مسدود شده به پایان می‌رسد.

ارائه بهترین شیوه‌ها

پس از تعامل با کاربر، زمانی که کاربران زمینه لازم برای درک دلیل درخواست شما و مزایای اجازه دسترسی را دارند، درخواست اجازه کنید.

در صورت امکان، روش‌های جایگزین برای انجام همان کار ارائه دهید. با انتخاب دقیق زمان مناسب برای پرسیدن، احتمال اینکه کاربرانتان در حالت مسدود شده‌ای قرار بگیرند که بازیابی آن دشوار باشد را کاهش می‌دهید.

هرگز هنگام بارگذاری صفحه یا بدون تعامل کاربر سوال نکنید

درخواست اجازه هنگام بارگذاری صفحه، معادل درخواست اطلاعات حساس از مشتری هنگام ورود به یک فروشگاه فیزیکی است. دیدن یک درخواست اجازه، احتمالاً در میان چندین درخواست دیگر برای ثبت نام در خبرنامه و رضایت کوکی، یک تجربه نامطلوب است. کاربران نمی‌فهمند که چرا از آنها خواسته شده و چگونه از این کار سود خواهند برد .

حتی اگر برنامه وب شما بدون دسترسی به یک قابلیت خاص نمی‌تواند کار کند، به کاربران فرصتی بدهید تا دلیل نیاز به آن را درک کنند. برای مثال، در ابتدای درخواست مجوز، دلیل نیاز به آن را توضیح دهید و به کاربران حق انتخاب بدهید (مثلاً با ارائه روش‌های جایگزین برای انجام همان عملکرد ). اگر نمی‌توانید لحظه بهتری برای درخواست مجوز نسبت به بارگذاری صفحه پیدا کنید، چند مثال در ادامه این راهنما وجود دارد.

درخواست اجازه بدون تعامل قبلی با کاربر نیز بی‌اثر است. این به عنوان فعال‌سازی گذرای کاربر شناخته می‌شود. بررسی‌های کروم نشان می‌دهد که ۷۷٪ از درخواست‌های اجازه در دسکتاپ بدون هیچ نشانه‌ای از قصد کاربر نمایش داده می‌شوند و در نتیجه، تنها ۱۲٪ از چنین درخواست‌هایی مجاز هستند. پس از تعامل کاربر، نرخ مجاز بودن به ۳۰٪ افزایش می‌یابد.

فقط پس از تعامل کاربر با صفحه، اجازه بخواهید.

فقط زمانی بپرسید که کاربران بتوانند دلیل آن را بفهمند.

تصمیمات مربوط به مجوز اغلب تصمیمات مربوط به حریم خصوصی هستند. بر اساس چارچوب یکپارچگی زمینه‌ای ، می‌دانیم که تصمیمات مربوط به حریم خصوصی بسیار زمینه‌ای هستند. درک دلیل لزوم دسترسی بسیار مهم است. شما فقط باید قابلیت‌هایی را درخواست کنید که برای ارائه ارزش به آنها نیاز دارید، جایی که کاربران احتمالاً موافقند که ارزش را پیدا خواهند کرد. علاوه بر این، وقتی برای کاربرتان مشخص است که چرا این قابلیت مفید است، درخواست اجازه کنید. درک زمینه استفاده را برای کاربران آسان‌تر کنید.

تحقیقات ما روی کاربران نشان می‌دهد که کاربران وقتی دلیل درخواست دسترسی توسط یک سایت را می‌فهمند و همچنین مزیتی را درک می‌کنند، به طور قابل توجهی بیشتر احتمال دارد که اجازه دسترسی بدهند. ما همچنین دریافته‌ایم که کاربران انتظار دارند ابتدا سایت‌های ناآشنا را بررسی کنند تا ارزش دریافت شده در ازای اجازه دسترسی را بهتر درک کنند. آنها اغلب در این بین درخواست‌های اجازه را رد می‌کنند یا نادیده می‌گیرند. با مجوزهای یک‌بار مصرف، ممکن است ابتدا اجازه یک بازدید را بدهند. این رفتارها را در برنامه خود پشتیبانی کنید.

ارائه جایگزین

نتیجه برخی از قابلیت‌ها ممکن است برای کاربران مفید نباشد. به عنوان مثال، موقعیت جغرافیایی یک دستگاه رومیزی بدون حسگر GPS ممکن است مکان اشتباهی را نشان دهد زیرا آن شخص به VPN متصل است. سایر کاربران ممکن است نخواهند دسترسی به کلیپ بورد را فراهم کنند زیرا ترجیح می‌دهند کنترل را در دست داشته باشند و این رویدادها را با ترکیب کلیدهای دستی فعال کنند. در این شرایط، یک روش جایگزین برای دستیابی به همان نتایج ارائه دهید.

برای مثال، اگر درخواست مجوز موقعیت مکانی دارید، یک فیلد متنی ارائه دهید که کاربران بتوانند کد پستی یا آدرس را در آن وارد کنند. اجازه دهید عناصر با استفاده از میانبر صفحه کلید یا منوی زمینه انتخاب و در کلیپ بورد کپی شوند. برای اعلان‌ها، به جای اعلان‌های فوری، ایمیل ارائه دهید.

یک الگوی مفید، استفاده از رابط کاربری جایگزین به عنوان توضیحی برای این است که چرا دسترسی می‌تواند مفید باشد. کاربرانی که گزینه‌ای برای وارد کردن موقعیت مکانی در کنار دکمه‌ای که API موقعیت مکانی را فعال می‌کند، می‌بینند، احساس کنترل می‌کنند، زیرا می‌دانند که می‌توانند آدرس خود را تایپ کنند. به طور مشابه، اگر بین دریافت اعلان‌ها از طریق فشار یا ایمیل یا پیوستن به جلسه بدون اجازه دسترسی به دوربین و میکروفون، حق انتخاب وجود داشته باشد، کاربران بده بستان‌ها را درک می‌کنند.

از حالت‌های مسدود شده اجتناب کنید

وقتی کاربری به‌طور دائم دسترسی به یک قابلیت دارای مجوز را رد می‌کند، مرورگرها به این تصمیم احترام می‌گذارند. اگر امکان ادامه درخواست دسترسی وجود داشت، سایت‌های مخرب کاربران را با درخواست‌ها بمباران می‌کردند. بازیابی از حالت مسدود شده یک قابلیت عمداً نیاز به تلاش دارد. از درخواست اجازه در موقعیت‌هایی که بعید است کاربران اجازه دسترسی بدهند، خودداری کنید.

یک روش رایج برای انجام این کار، استفاده از پیش‌درخواست است که در آن به کاربران خود توضیح می‌دهید چه اتفاقی قرار است بیفتد و چرا برنامه شما به قابلیتی که می‌خواهید درخواست کنید نیاز دارد. فقط زمانی که کاربران به چنین پیش‌درخواستی واکنش مثبت نشان دهند، باید درخواست مجوز مرورگر را فعال کنید. موقعیت‌هایی وجود دارد که کاربران ممکن است به طور مشروع نیاز به بازیابی از آن حالت داشته باشند. برای اطلاعات بیشتر در این مورد، به بخش «کمک به کاربران برای بازیابی از حالت مسدود شده» مراجعه کنید.

به محتوای شخص ثالث توجه کنید

از منابع غیرمنتظره درخواست‌های مجوز آگاه باشید. اسکریپت‌های شخص ثالث در سایت شما ممکن است درخواست‌های مجوز ناخواسته‌ای را ایجاد کنند. این می‌تواند بر تجربه کاربری شما تأثیر بگذارد، به خصوص اگر درخواست‌ها از بهترین شیوه‌ها پیروی نکنند. برای کنترل تجربه کاربری، مستندات مربوط به هرگونه کتابخانه و اسکریپت شخص ثالثی را که به کد خود اضافه می‌کنید، مطالعه کنید.

چه زمانی اجازه بگیریم

در اینجا چند نمونه از لحظاتی که برای درخواست اجازه، با پیروی از بهترین شیوه‌ها، به خوبی عمل می‌کنند، آورده شده است:

  • بعد از اینکه کاربر هنگام وارد کردن دستی آدرس، روی گزینه «از موقعیت مکانی من استفاده کن» در کنار فیلد فرم کلیک کرد.
  • پس از اینکه کاربر در یک کانال ویدیویی یا پست مشترک می‌شود، و روی دکمه تأیید در پنجره‌ای که توضیح می‌دهد به‌روزرسانی‌ها می‌توانند به صورت ایمیل یا اعلان ارسال شوند، کلیک می‌کند.
  • بعد از اینکه کاربر به صفحه‌ای می‌رسد که او را برای پیوستن به یک تماس ویدیویی آماده می‌کند و در پیش‌نمایشی که نشان می‌دهد می‌خواهد دیده و شنیده شود، پاسخ مثبت می‌دهد. برای اطلاعات بیشتر به مطالعه موردی Google Meet مراجعه کنید.

الگوهای کد

اجازه استفاده از یک API بسته به نوع API از طرق مختلفی اعطا می‌شود. برخی از APIهای قدیمی‌تر از مدلی استفاده می‌کنند که در آن مرورگر به طور خودکار در اولین باری که سعی در استفاده از API دارید، درخواست اجازه می‌کند. یک مثال، API موقعیت جغرافیایی هنگام فراخوانی navigator.geolocation.getCurrentPosition() است.

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

سایر APIها از مدلی استفاده می‌کنند که در آن ابتدا با یک متد استاتیک، درخواست مجوز را به صراحت انجام می‌دهید. یک مثال خوب، 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 خاص استفاده کنید، از متد navigator.permissions.query() از Permissions API استفاده کنید.

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 تشخیص دهید که آیا دسترسی را مسدود کرده‌اند یا خیر و راهنمایی در مورد نحوه تغییر تنظیمات آنها ارائه دهید. هنگامی که کاربران با عناصر رابط کاربری مرتبط با قابلیتی که دسترسی در آن محدود شده است، تعامل دارند، از وضعیت مجوز بررسی استفاده کنید و یک پنجره عیب‌یابی باز کنید.

مراحل دقیق تغییر وضعیت مجوز بسته به مرورگر متفاوت است، بنابراین توضیحات منطبق بر رشته عامل کاربر را برای رایج‌ترین مرورگرها ارائه دهید.

در کروم، کاربران می‌توانند مجوزها را از طریق «مشاهده اطلاعات سایت» > «تنظیمات سایت» که در نوار آدرس قرار دارد، تغییر دهند . در برخی موارد، ممکن است لازم باشد قبل از استفاده از یک قابلیت، صفحه را مجدداً بارگذاری کنند. در این صورت، یک نوار پیام در بالای پنجره ظاهر می‌شود که پیشنهاد بارگذاری مجدد سایت را می‌دهد.

کنترل‌های سایت در مرورگر کروم

درخواست بارگذاری مجدد پس از تغییر مجوزها با استفاده از کنترل‌های سایت.

رابط‌های کاربری مشابهی برای کنترل مجوزها در مرورگرهای دیگر، مانند فایرفاکس ، وجود دارد.