זיהוי

אפשר לזהות אם המשתמש משתמש ב-PWA בדפדפן או במצב עצמאי. בדפדפנים המבוססים על Chromium (Android ומחשב) אפשר גם לזהות את האירועים הבאים:

  • הסטטוס והתוצאה של תיבת הדו-שיח להזמנת ההתקנה.
  • ההתקנה הסתיימה.
  • הניווט עובר מדפדפן לחלון PWA, ולהפך.
  • סטטוס התקנת PWA.
  • אפליקציה קשורה הותקנה מחנות אפליקציות.

אפשר להשתמש בנתונים האלה לניתוח נתונים, להבין את העדפות המשתמשים ולהתאים אישית את חוויית השימוש. כדי לתעד את האירועים האלה, אפשר להשתמש בכלים כמו שאילתות מדיה, אירועים מ-window או באמצעות ממשקי ה-API עם היכולות שזמינים שמפורטים כאן.

זיהוי מצב התצוגה

כדי לעקוב אחרי האופן שבו המשתמשים מפעילים את PWA, אפשר להשתמש ב-matchMedia() כדי לבדוק את שאילתת המדיה display-mode.

window.addEventListener('DOMContentLoaded', () => {
  let displayMode = 'browser tab';
  if (window.matchMedia('(display-mode: standalone)').matches) {
    displayMode = 'standalone';
  }
  // Log launch display mode to analytics
  console.log('DISPLAY_MODE_LAUNCH:', displayMode);
});

אם משתמשים בדוגמה הזו, חשוב להתאים את מצב התצוגה מהמניפסט של אפליקציית האינטרנט, לדוגמה: standalone, minimal-ui או fullscreen. אפשר גם להתאים מספר שאילתות במחרוזת שאילתת המדיה באמצעות תנאים מופרדים בפסיקים.

אפשר גם להוסיף ל-start_url של המניפסט פרמטר של שאילתה, ולתעד אותו בעזרת ניתוח הנתונים כדי לעקוב אחרי הנתונים הסטטיסטיים לגבי המקרים שבהם נעשה שימוש ב-PWA, באיזה אופן ובאיזה אופן.

התקנת האפליקציה

כשמשתמש מאשר את בקשת ההתקנה בדפדפן, האירוע appinstalled מופעל בדפדפנים המבוססים על Chromium. כדי להשתמש במטפל באירועים הזה, מומלץ להסיר כל קידום של התקנה בתוך האפליקציה שהוספת.

window.addEventListener('appinstalled', () => {
  // If visible, hide the install promotion
  hideInAppInstallPromotion();
  // Log install to analytics
  console.log('INSTALL: Success');
});

חשוב לזכור: במכשירי Android עם WebAPK, האירוע מופעל כשהמשתמש מקבל את תיבת הדו-שיח, ולא אחרי שיוצרים ומתקינים את ה-WebAPK. ייתכן עיכוב של כמה שניות עד להתקנה מלאה של האפליקציה.

פרק הנחיית ההתקנה מסביר איך לזהות אם בקשת ההתקנה זמינה ואיזו בחירה המשתמש בוחר.

העברת סשנים

המשתמשים יכולים להשתמש ב-PWA בתוך הדפדפן ובגרסה הנפרדת שמותקנת. בדפדפנים במחשב, ניתן להעביר את הניווט הנוכחי בין ההקשרים האלה באמצעות תגים או אפשרויות בתפריט, כפי שמוצג בתמונה הבאה.

העברת הניווט בין כרטיסייה בדפדפן לבין חלון PWA.

ב-Android, קיימת אפשרות בתפריט שדומה לזו שמופיעה במחשב, דרך הדפדפן שמעביר את הניווט לאפליקציה. במקרה הזה, כתובת ה-URL הנוכחית פתוחה, אבל זו תהיה ניווט חדש בדפים באפליקציה.

בתמונה הבאה אפשר לראות את האפשרות בתפריט ב-Android כשהאפליקציה כבר מותקנת.

ב-Chrome ב-Android מוצג אפשרות בתפריט כדי לפתוח ניווט חדש בחלון PWA.

העברה לאחר ההתקנה

בדפדפנים במחשב, הניווט הנוכחי מועבר מיד לאפליקציה לאחר ההתקנה. כרטיסיית הדפדפן נסגרת והאפליקציה החדשה שהותקנה נפתחת וממשיכת את הפעילות של המשתמש.

בדפדפנים לנייד, הניווט הנוכחי שלכם נשאר בדפדפן כשאתם מתקינים את האפליקציה. אם המשתמשים רוצים לעבור לאפליקציה, הם צריכים לפתוח את האפליקציה באופן ידני, והניווט יהיה חדש.

איתור ההעברה

כדי לזהות את ההעברה בין הדפדפן והחלון, אפשר להשתמש בשאילתת מדיה:

window.addEventListener('DOMContentLoaded', () => {
  // replace standalone with your display used in manifest
  window.matchMedia('(display-mode: standalone)')
    .addEventListener('change', (evt) => {
      let displayMode = 'browser';
      if (evt.matches) {
        displayMode = 'standalone';
      }
      // Log display mode change to analytics
      console.log('DISPLAY_MODE_CHANGED', displayMode);
    });
});

בידוד האחסון של iOS ו-iPadOS

ב-iOS וב-iPadOS, אין ניווט או העברה של כתובת URL בין הדפדפן לבין סמל האפליקציה שהותקן. גם אם מדובר באותה PWA, לכל סמל PWA שהמשתמש מתקין יהיה אחסון משלו, מבודד מהכרטיסייה של Safari ומסמלים אחרים. כשמשתמש פותח את סמל ההתקנה, שום אחסון לא משותף עם Safari. אם צריך להתחבר ל-PWA, המשתמש יצטרך להתחבר מחדש. אם האפליקציה נוספה למסך הבית כמה פעמים, לכל מופע PWA, למשתמש יהיה סשן שונה.

תמיכה בדפדפן

  • Chrome: לא נתמך.
  • קצה: 79.
  • Firefox: לא נתמך.
  • Safari: לא נתמך.

מקור

אתר כלשהו מצביע על קשר גומלין עם אפליקציה באמצעות המניפסט. כדי לעשות את זה, צריך להשתמש במשתמש related_applications במפרט המניפסט של אפליקציית האינטרנט. המפתח related_applications הוא מערך של אובייקטים שמייצגים כל אפליקציה קשורה. כל רשומה מכילה platform, url ומאפיין id אופציונלי.

ערכי הפלטפורמה האפשריים:

  • chrome_web_store: חנות האינטרנט של Google Chrome.
  • play: אפליקציות מ-Google Play (Android ו-ChromeOS).
  • chromeos_play: ChromeOS Play.
  • webapp: אפליקציות אינטרנט.
  • windows: Microsoft Store (Windows 10 ו-Windows 11).
  • f-droid: F-droid.
  • amazon: Amazon AppStore (FireOS).

כשמשתמש מתקין אפליקציה, אפשר להפנות את המשתמשים לאפליקציה קשורה אם מגדירים את השדה prefer_related_applications לערך true במניפסט. עם ההגדרה הזו, בדפדפנים תואמים, תהליכי ההתקנה לא יתקינו את ה-PWA. במקום זאת, הן יפעילו התקנה בחנות מה-url או id שציינת ברשומה של related_applications.

האפליקציה הקשורה יכולה להיות ה-PWA שלכם, והיא תותקן דרך חנות אפליקציות. אחד היתרונות של ההגדרה הזו הוא שכרגע רק אפליקציות שהותקנו דרך חנות האפליקציות משוחזרות באמצעות גיבוי או כשעוברים למכשיר חדש.

{
  ...
  "related_applications:" [
     {
       "platform": "play",
       "url": "https://play.google.com/..."
     }
  ],
  "prefer_related_applications": true
}

מודעות באנר לאפליקציות חכמות של Apple

דפדפן Safari לא תומך במינוי related_applications, אבל יש בו מודעות באנר חכמות לאפליקציות לאפליקציות ב-App Store. לכן, אם אתם רוצים לקדם PWA או אפליקציה אחרת שפרסמתם ב-App Store, תוכלו לכלול מטא תגים ב-HTML של ה-PWA כדי להזמין את המשתמשים להתקין את האפליקציה (יש לעיין בקישור שסופק), או להעביר את נתוני הניווט אם האפליקציה כבר מותקנת.

ה-method getInstalledRelatedApps() מאפשרת לאתר לבדוק אם האפליקציה ל-iOS או ל-Android/למחשב או ל-PWA מותקנת במכשיר של המשתמש.

בדיקה אם אפליקציה קשורה מותקנת כבר עוזרת להטמיע תכונות כמו הסתרת הנחיות שהותקנו בהתאמה אישית או הפניית המשתמשים ישירות לאפליקציה המותקנת, במקום לעבור לאתר לשימוש כללי. כדי להשתמש בשיטת getInstalledRelatedApps(), צריך להגדיר את החיבור ביניהם גם באפליקציה המותקנת וגם באתר. כל אפליקציה, בהתאם לפלטפורמה שלה, כוללת מטא-נתונים לזיהוי האתר, והאתר כולל את האפליקציה המותקנת הצפויה בשדה related_applications במניפסט.

באמצעות כלים כמו BubbleWrap או PWA Builder, שמאפשרים לפרסם את ה-PWA בחנויות אפליקציות, כבר מוסיפים את המטא-נתונים הנדרשים כדי שאפשר יהיה להשתמש ב-getInstalledRelatedApps() באתר באופן מיידי. כדי לזהות אם כבר מותקנת אפליקציית PWA באמצעות getInstalledRelatedApps(), צריך להגדיר את webapp בשדה המניפסט related_applications עם כתובת ה-URL של המניפסט:

...
"related_applications": [{
   "platform": "webapp",
   "url": "https://example.com/manifest.json",
}],
...

getInstalledRelatedApps() מחזירה מערך של אובייקטים של האפליקציה. אם המערך ריק, האפליקציה הקשורה לא מותקנת.

const relatedApps = await navigator.getInstalledRelatedApps();
const PWAisInstalled = relatedApps.length > 0;

זיהוי התקנה מחוץ להיקף ה-PWA

ב-Chrome ב-Android 89, אפשר לזהות אם PWA מותקנת, גם מחוץ להיקף ההרשאות של ה-PWA. אפליקציית ה-PWA חייבת להגדיר קובץ JSON בתיקייה /.well-known/, וכך לתת הרשאה להיקף האחר, כמו שמתואר במאמר הזה.

משאבים