با شروع آزمایش یک منوی افزونه های جدید، برنامه افزودنی خود را آماده کنید

تاریخ انتشار: 19 نوامبر 2024

در Google I/O 2024، چند طرح اولیه را برای تغییرات آتی در منوی برنامه‌های افزودنی به اشتراک گذاشتیم که به کاربران کنترل بیشتری بر روی سایت‌هایی که افزونه‌ها می‌توانند به آن دسترسی داشته باشند، می‌دهد. ما به زودی آزمایش این تغییرات را آغاز خواهیم کرد و با درصد کمی از کاربران در قناری شروع می کنیم و امیدواریم در آینده آنها را به صورت گسترده تری عرضه کنیم.

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

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

چه چیزی در حال تغییر است؟

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

طراحی در حال انجام برای منوی برنامه‌های افزودنی جدید
طراحی در حال انجام برای منوی برنامه‌های افزودنی جدید

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

یک درخواست دسترسی به سایت اضافه کنید

ما یک API جدید برای تکمیل این تغییرات با ورودی قابل توجه سایر مرورگرها و توسعه دهندگان در گروه WebExtensions طراحی کرده ایم.

اگر کاربر از دسترسی به صفحه خودداری کرده باشد، افزونه‌ها اکنون می‌توانند با استفاده از permissions.addSiteAccessRequest API جدید درخواست دسترسی کنند. هنگامی که یک برنامه افزودنی این کار را انجام می دهد، کاربر یک پیام "Allow" را در کنار قطعه پازل برنامه افزودنی در نوار ابزار می بیند. در اینجا یک طرح است که ما در حال بررسی آن هستیم:

درخواست دسترسی به سایت در example.com
درخواست دسترسی به سایت در example.com

هنگامی که کاربر روی "Allow" در منوی برنامه‌های افزودنی کلیک می‌کند، به برنامه افزودنی اجازه دسترسی دائمی به میزبان داده می‌شود. کاربر می‌تواند در آینده با دسترسی به منوی برنامه‌های افزودنی یا در صفحه chrome://extensions، آن را دوباره متوقف کند. با کلیک بر روی "Allow 1?" درون نوار ابزار یک راه سریعتر برای اعطای دسترسی فوری فراهم می کند.

برنامه‌های افزودنی می‌توانند permissions.addSiteAccessRequest با یک tabId فراخوانی کنند تا درخواست مجوز برای آن برگه نشان داده شود. امروز می‌توانید از تشخیص ویژگی برای شروع ایمن استفاده از آن در برنامه افزودنی خود استفاده کنید. API بدون منوی جدید هیچ کاری برای کاربران انجام نمی دهد، اما استفاده از آن برای کاربران با منوی جدید که به تدریج عرضه می شود، مفید خواهد بود.

chrome.tabs.onUpdated.addListener(async (tabId, changes) => {
  if (typeof changes.url !== 'string') return;

  const url = new URL(changes.url);

  // If we are on the /checkout page of example.com.
  if (url.origin === 'https://example.com' && url.pathname === '/checkout') {
    const hasPermission = await chrome.permissions.contains({
      origins: ['https://example.com/*']
    });

    // We already have host permissions.
    if (hasPermission) {
      return;
    }

    // Add a site access request if the API is available.
    if (chrome.permissions.addSiteAccessRequest) {
      chrome.permissions.addSiteAccessRequest({ tabId });
    }
  }
});

در این مثال، ما فقط در صورتی درخواست اضافه می کنیم که کاربر در صفحه /checkout باشد. می‌توانید کد کامل را در مخزن chrome-extensions-samples ما ببینید.

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

درخواست‌ها به یک برگه خاص محدود می‌شوند و زمانی که کاربر به مبدأ دیگری هدایت می‌شود، به‌طور خودکار پاک می‌شوند. یک روش removeSiteAccessRequest مربوطه برای پاک کردن یک درخواست به طور صریح در دسترس است (مانند اگر یک درخواست به یک مسیر خاص محدود شده باشد).

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

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

آن را امتحان کنید

API به طور پیش فرض در Chrome 133.0.6838.0 و بالاتر (در حال حاضر در Chrome Canary) فعال است. برای فعال کردن منوی جدید، در chrome://flags، پرچم "Extensions Menu Access Control" را فعال کنید.

به عنوان یادآوری، این هنوز در حال پیشرفت است و ممکن است به تکامل و تغییر ادامه دهد. برای مشاهده به‌روزترین تجربه، توصیه می‌کنیم در Chrome Canary آزمایش کنید.

می‌توانید در فهرست پستی chromium-extensions که در ادامه کار روی منوی جدید به‌خاطر داشته باشیم، درباره طراحی جدید بازخورد بگذارید.