كيفية إضافة واجهة مستخدم أكثر ثراءً للتثبيت

توفّر متاجر التطبيقات مساحة للمطوّرين لعرض تطبيقاتهم قبل تثبيتها، بالإضافة إلى لقطات شاشة ومعلومات نصية تساعد المستخدمين على اتخاذ قرار تثبيت التطبيق. وتوفّر واجهة مستخدم غنية بصريًا مساحة مماثلة لمطوّري تطبيقات الويب لدعوة المستخدمين إلى تثبيت تطبيقاتهم مباشرةً من المتصفّح. تتوفّر واجهة المستخدم المحسَّنة هذه في Chrome لنظام Android وبيئات أجهزة الكمبيوتر المكتبي.

الطلب التلقائي

لا توفّر التجربة التلقائية سياقًا كافيًا في المثال أدناه.

مربّع حوار التثبيت التلقائي للمتصفّح على أجهزة الكمبيوتر المكتبي.
مربّع حوار التثبيت التلقائي على الكمبيوتر المكتبي


مربع حوار التثبيت التلقائي للمتصفّح على الأجهزة الجوّالة.
مربّع حوار التثبيت التلقائي على الأجهزة الجوّالة

واجهة مستخدم أكثر ثراءً للتثبيت

للحصول على مربّع الحوار Richer Install API بدلاً من الإشعار التلقائي الصغير العادي، أضِف الحقلَين screenshots وdescription إلى بيان الويب. اطلع على مثال Squoosh.app أدناه:

واجهة مستخدم أكثر ثراءً للتثبيت على سطح المكتب والأجهزة الجوّالة
واجهة مستخدم أكثر ثراءً للتثبيت على أجهزة الكمبيوتر المكتبي والأجهزة الجوّالة.

يتألف مربّع حوار واجهة المستخدم للتثبيت الغنية بصريًا من محتوى الحقلَين description وscreenshots في بيان الويب.

لتشغيل مربّع الحوار، ما عليك سوى إضافة لقطة شاشة واحدة على الأقل لشكل الجهاز المقابل، ولكن يُنصح بإضافة الوصف أيضًا. راجع تفاصيل هذه الحقول أدناه.

لقطات الشاشة

تضيف لقطات الشاشة الجزء "أكثر ثراءً" إلى واجهة المستخدم الجديدة للتثبيت، وننصح بشدة باستخدامها. تضيف في ملف البيان العضو screenshots، الذي يأخذ مصفوفة تتطلب صورة واحدة على الأقل وسيعرض Chrome ما يصل إلى ثمانية منها. في ما يلي مثال.

 "screenshots": [
    {
     "src": "source/image1.gif",
      "sizes": "640x320",
      "type": "image/gif",
      "form_factor": "wide",
      "label": "Wonder Widgets"
    }
]

يجب أن تستوفي لقطات الشاشة المعايير التالية:

  • يجب ألا يقل العرض والارتفاع عن 320 بكسل و3,840 بكسل كحد أقصى.
  • لا يمكن أن يكون الحدّ الأقصى للبُعد أكبر من 2.3 ضعف الحدّ الأدنى.
  • يجب أن تتضمّن جميع لقطات الشاشة التي لها قيمة شكل الجهاز نفسها نِسب عرض إلى ارتفاع متطابقة.
  • يمكن استخدام تنسيقات الصور JPEG وPNG فقط.
  • لن تظهر سوى ثماني لقطات شاشة. وفي حال إضافة المزيد، يتجاهلها وكيل المستخدم ببساطة.

ويجب أيضًا تضمين حجم الصورة ونوعها حتى يتم عرضها بشكل صحيح. مشاهدة هذا العرض التوضيحي

وتحدّد السمة form_factor للمتصفح ما إذا كان يجب أن تظهر لقطة الشاشة على أجهزة الكمبيوتر المكتبي (wide) أو الأجهزة الجوّالة (narrow).

الوصف

يصف عضو description التطبيق في رسالة التثبيت لدعوة المستخدم إلى الاحتفاظ بالتطبيق.

سيتم عرض مربّع الحوار حتى بدون description، ولكنّنا نشجعك على ذلك. هناك حدّ أقصى يبدأ بعد 7 أسطر من النص (حوالي 324 حرفًا)، ويتم اقتطاع الأوصاف الطويلة وإضافة علامة حذف (كما ترى في هذا المثال).

{
…
"description": "Compress and compare images with different codecs
right in your browser."
}
تمت إضافة الوصف
تمت إضافة الوصف.
وصف أطول تم اقتطاعه.
يتم اقتطاع الأوصاف الأطول.

يظهر الوصف في أعلى رسالة التثبيت.

ربما لاحظت من خلال لقطات الشاشة أنّ مربعات حوار التثبيت تسرد أيضًا مصدر التطبيق. يتم اقتطاع المصادر الطويلة جدًا التي لا تناسب واجهة المستخدم، ويُعرف ذلك أيضًا باسم "الحذف" ويُستخدَم كإجراء أمني لحماية المستخدمين.

محتوى إضافي للقراءة

الخصائص الديموغرافية

HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="color-scheme" content="dark light" />
    <link rel="manifest" href="manifest.json" />
    <title>How to add Richer Install UI to your web app</title>
    <!-- TODO: Devsite - Removed inline handlers -->
    <!-- <script>
      if ('serviceWorker' in navigator) {
        window.addEventListener('load', () => {
          navigator.serviceWorker.register('sw.js');
        });
      }
    </script>
    <script type="module" src="script.js"></script> -->
  </head>
  <body>
    <h1>How to add Richer Install UI to your web app</h1>
    <ol>
      <li>
        Install the app by clicking the button below. After the installation,
        the button is disabled.
        <p>
          <button disabled type="button">Install</button>
        </p>
      </li>
      <li>
        When you click on install a dialog similar to the ones from app stores
        will be displayed.
      </li>
      <li>
        The dialog includes the `description` and `screenshots` set in the app
        manifest.
      </li>
      <li>
        Screenshots should be different depending if the app is being installed
        on a mobile or desktop device, according to the `form_factor` value set
        for the screenshots on the manifest
      </li>
    </ol>
  </body>
</html>

JS


        // The install button.
const installButton = document.querySelector('button');

// Only relevant for browsers that support installation.
if ('BeforeInstallPromptEvent' in window) {
  // Variable to stash the `BeforeInstallPromptEvent`.
  let installEvent = null;

  // Function that will be run when the app is installed.
  const onInstall = () => {
    // Disable the install button.
    installButton.disabled = true;
    // No longer needed.
    installEvent = null;
  };

  window.addEventListener('beforeinstallprompt', (event) => {
    // Do not show the install prompt quite yet.
    event.preventDefault();
    // Stash the `BeforeInstallPromptEvent` for later.
    installEvent = event;
    // Enable the install button.
    installButton.disabled = false;
  });

  installButton.addEventListener('click', async () => {
    // If there is no stashed `BeforeInstallPromptEvent`, return.
    if (!installEvent) {
      return;
    }
    // Use the stashed `BeforeInstallPromptEvent` to prompt the user.
    installEvent.prompt();
    const result = await installEvent.userChoice;
    // If the user installs the app, run `onInstall()`.
    if (result.outcome === 'accepted') {
      onInstall();
    }
  });

  // The user can decide to ignore the install button
  // and just use the browser prompt directly. In this case
  // likewise run `onInstall()`.
  window.addEventListener('appinstalled', () => {
    onInstall();
  });
}