كيفية توفير تجربة التثبيت داخل التطبيق

تتيح لك العديد من المتصفّحات تفعيل تثبيت تطبيق الويب التقدّمي (PWA) والترويج له مباشرةً من خلال واجهة المستخدم. يتيح "التثبيت" (الذي كان يُعرف أحيانًا باسم "الإضافة إلى الشاشة الرئيسية") للمستخدمين تثبيت تطبيق الويب التقدّمي (PWA) على أجهزتهم الجوّالة أو أجهزة الكمبيوتر المكتبي يؤدي تثبيت تطبيق ويب تقدّمي (PWA) إلى إضافته إلى حساب المستخدم مشغّل التطبيقات حتى يمكن تشغيله مثل أي تطبيق آخر مثبَّت.

بالإضافة إلى تجربة التثبيت التي يوفّرها المتصفّح، يمكنك توفير خطوات تثبيت مخصصة مباشرة داخل تطبيقك.

زر "تثبيت التطبيق" المتوفّر في تطبيق Spotify PWA
زر "تثبيت التطبيق" المتوفّر في تطبيق الويب التقدّمي Spotify

عند التفكير في الترويج للتثبيت، ضع في اعتبارك كيف يمكن للمستخدمين استخدام تطبيق الويب التقدّمي (PWA) على سبيل المثال، إذا كانت هناك مجموعة من المستخدمين يستخدمون تطبيقك المتوافق مع الأجهزة الجوّالة المتعددة مرات في الأسبوع، قد يستفيد هؤلاء المستخدمون من الراحة الإضافية التي يوفّرها إطلاق تطبيقك من الشاشة الرئيسية للهاتف أو من قائمة "ابدأ" في نظام التشغيل لأجهزة الكمبيوتر المكتبي. تستفيد أيضًا بعض تطبيقات الإنتاجية والترفيه من مساحة الشاشة الإضافية التي يتم إنشاؤها عن طريق إزالة أشرطة أدوات المتصفّح من النافذة في أوضاع standalone أو minimal-ui أو window-control-overlay المثبّتة.

المتطلبات الأساسية

قبل البدء، تأكَّد من أنّ تطبيق الويب التقدّمي (PWA) يستوفي متطلبات قابلية التثبيت، والتي عادةً ما تتضمّن بيان تطبيق الويب.

الترويج للتثبيت

لإظهار أنّ تطبيق الويب التقدّمي قابل للتثبيت، ولتقديم مسار تثبيت مخصّص داخل التطبيق:

  1. يرصد الحدث beforeinstallprompt.
  2. احفظ الحدث beforeinstallprompt لكي يتمكّن من بدء عملية التثبيت لاحقًا.
  3. تنبيه المستخدم بأنّ تطبيق الويب التقدّمي (PWA) قابل للتثبيت مع توفير زر أو غير ذلك لبدء تدفق التثبيت داخل التطبيق.

انتظِر حدث beforeinstallprompt.

إذا كان تطبيق الويب التقدّمي يستوفي معايير التثبيت المطلوبة: ينشّط المتصفّح حدث beforeinstallprompt. احفظ مرجعًا للحدث. وتعديل واجهة المستخدم للإشارة إلى أنّ المستخدم يمكنه تثبيت تطبيق الويب التقدّمي (PWA)

// Initialize deferredPrompt for use later to show browser install prompt.
let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => {
  // Prevent the mini-infobar from appearing on mobile
  e.preventDefault();
  // Stash the event so it can be triggered later.
  deferredPrompt = e;
  // Update UI notify the user they can install the PWA
  showInstallPromotion();
  // Optionally, send analytics event that PWA install promo was shown.
  console.log(`'beforeinstallprompt' event was fired.`);
});

خطوات التثبيت داخل التطبيق

لتوفير إمكانية التثبيت داخل التطبيق، يجب توفير زر أو عنصر واجهة آخر يمكن للمستخدم النقر عليها لتثبيت التطبيق عند النقر على العنصر أو تم النقر عليه، للاتصال بـ prompt() في حدث beforeinstallprompt المحفوظ (المحفوظ في deferredPrompt). ويعرض هذا الإجراء للمستخدم مربّع حوار مشروطًا للتثبيت، ويطلب منه تأكيد رغبته في تثبيت تطبيقك المتوافق مع الأجهزة الجوّالة.

buttonInstall.addEventListener('click', async () => {
  // Hide the app provided install promotion
  hideInstallPromotion();
  // Show the install prompt
  deferredPrompt.prompt();
  // Wait for the user to respond to the prompt
  const { outcome } = await deferredPrompt.userChoice;
  // Optionally, send analytics event with outcome of user choice
  console.log(`User response to the install prompt: ${outcome}`);
  // We've used the prompt and can't use it again, throw it away
  deferredPrompt = null;
});

تمثّل السمة userChoice وعودًا يتم حلها وفقًا لاختيار المستخدم. يمكنك طلب "prompt()" في الحدث المؤجل مرّة واحدة فقط. إذا كان المستخدم يرفضه، وعليك الانتظار إلى حين وقوع الحدث "beforeinstallprompt". يتم إطلاقها مرة أخرى، عادةً بعد موقع userChoice مباشرةً تم حلها.

رصد حالات تثبيت التطبيق المتوافق مع الويب بنجاح

يمكنك استخدام السمة userChoice لتحديد ما إذا كان المستخدِم قد ثبَّتها. تطبيقك من داخل واجهة المستخدم. إذا ثبَّت المستخدم تطبيق الويب التقدّمي (PWA) من شريط العناوين أو من مكوّن المتصفّح الآخر، لن يساعدك userChoice. وبدلاً من ذلك، ننصحك بالاستماع إلى حدث "appinstalled" الذي يتم تنشيطه متى شئت. تثبيت تطبيق الويب التقدّمي (PWA) بغض النظر عن الآلية المستخدمة لتثبيته.

window.addEventListener('appinstalled', () => {
  // Hide the app-provided install promotion
  hideInstallPromotion();
  // Clear the deferredPrompt so it can be garbage collected
  deferredPrompt = null;
  // Optionally, send analytics event to indicate successful install
  console.log('PWA was installed');
});

اكتشاف كيفية إطلاق تطبيق الويب التقدّمي (PWA)

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

تتبُّع كيفية إطلاق تطبيق الويب التقدّمي (PWA)

لتتبُّع كيفية تشغيل المستخدمين لتطبيق الويب التقدّمي (PWA)، استخدِم matchMedia() لاختبار استعلام عن الوسائط (display-mode).

function getPWADisplayMode() {
  if (document.referrer.startsWith('android-app://'))
    return 'twa';
  if (window.matchMedia('(display-mode: browser)').matches)
    return 'browser';
  if (window.matchMedia('(display-mode: standalone)').matches || navigator.standalone)
    return 'standalone';
  if (window.matchMedia('(display-mode: minimal-ui)').matches)
    return 'minimal-ui';
  if (window.matchMedia('(display-mode: fullscreen)').matches)
    return 'fullscreen';
  if (window.matchMedia('(display-mode: window-controls-overlay)').matches)
    return 'window-controls-overlay';

  return 'unknown';
}

تتبُّع حالات تغيير وضع العرض

لتتبُّع ما إذا كان المستخدم يغيّر بين browser وأوضاع العرض الأخرى، راقِب التغييرات في طلب عرض الوسائط display-mode.

// Replace "standalone" with the display mode used in your manifest
window.matchMedia('(display-mode: standalone)').addEventListener('change', () => {
  // Log display mode change to analytics
  console.log('DISPLAY_MODE_CHANGED', getPWADisplayMode());
});

تعديل واجهة المستخدم استنادًا إلى وضع العرض الحالي

لتطبيق لون خلفية مختلف لتطبيق الويب التقدّمي (PWA) عند تشغيله كتطبيق مثبَّت تطبيق الويب التقدّمي (PWA)، استخدِم لغة CSS المشروطة:

@media all and (display-mode: standalone) {
  body {
    background-color: yellow;
  }
}

تعديل رمز تطبيقك واسمه

ماذا لو كنت بحاجة إلى تعديل اسم تطبيقك أو تقديم رموز جديدة؟ يمكنك الاطّلاع على كيفية معالجة Chrome لتحديثات بيان تطبيق الويب. لمعرفة متى وكيف تظهر هذه التغييرات في Chrome.