הוספת מניפסט של אפליקציית אינטרנט

תמיכה בדפדפן

  • 39
  • 79
  • x
  • x

מקור

מניפסט של אפליקציית אינטרנט הוא קובץ JSON שמנחה את הדפדפן איך להתנהג ב-Progressive Web App (PWA) כשמתקינים אותה במחשב או במכשיר הנייד של המשתמש. לכל הפחות, קובץ מניפסט טיפוסי כולל:

  • שם האפליקציה
  • הסמלים שבהם צריך להשתמש באפליקציה
  • כתובת ה-URL שאמורה להיפתח כשהאפליקציה מופעלת

יצירה של קובץ המניפסט

לקובץ המניפסט יכול להיות כל שם, אבל בדרך כלל השם שלו הוא manifest.json והוא מוצג מהשורש (הספרייה ברמה העליונה של האתר). לפי המפרט, הסיומת צריכה להיות .webmanifest, אבל כדאי להשתמש בקובצי JSON כדי שהמניפסטים יוכלו לקרוא בצורה ברורה יותר.

מניפסט טיפוסי נראה כך:

{
  "short_name": "Weather",
  "name": "Weather: Do I need an umbrella?",
  "icons": [
    {
      "src": "/images/icons-vector.svg",
      "type": "image/svg+xml",
      "sizes": "512x512"
    },
    {
      "src": "/images/icons-192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "/images/icons-512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "id": "/?source=pwa",
  "start_url": "/?source=pwa",
  "background_color": "#3367D6",
  "display": "standalone",
  "scope": "/",
  "theme_color": "#3367D6",
  "shortcuts": [
    {
      "name": "How's the weather today?",
      "short_name": "Today",
      "description": "View weather information for today",
      "url": "/today?source=pwa",
      "icons": [{ "src": "/images/today.png", "sizes": "192x192" }]
    },
    {
      "name": "How's the weather tomorrow?",
      "short_name": "Tomorrow",
      "description": "View weather information for tomorrow",
      "url": "/tomorrow?source=pwa",
      "icons": [{ "src": "/images/tomorrow.png", "sizes": "192x192" }]
    }
  ],
  "description": "Weather forecast information",
  "screenshots": [
    {
      "src": "/images/screenshot1.png",
      "type": "image/png",
      "sizes": "540x720",
      "form_factor": "narrow"
    },
    {
      "src": "/images/screenshot2.jpg",
      "type": "image/jpg",
      "sizes": "720x540",
      "form_factor": "wide"
    }
  ]
}

מאפייני המניפסט העיקריים

short_name וגם name

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

icons

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

המאפיין icons הוא מערך של אובייקטים מסוג תמונה. כל אובייקט צריך לכלול את src, את המאפיין sizes ואת type של התמונה. כדי להשתמש בסמלים שניתנים למיסוך, שלפעמים נקראים סמלים מותאמים ב-Android, צריך להוסיף את הערך "purpose": "any maskable" לנכס icon.

ב-Chromium, עליך לספק סמל בגודל 192x192 פיקסלים לפחות וסמל של 512x512 פיקסלים. אם תספקו רק את שני גודלי הסמלים האלה, Chrome ישנה את גודל הסמלים באופן אוטומטי כך שיתאימו למכשיר. אם אתם מעדיפים לשנות את קנה המידה של הסמלים שלכם ולהתאים אותם לפי שלמות הפיקסלים, עליכם להוסיף סמלים במרווחים של 48dp.

id

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

start_url

השדה start_url הוא מאפיין חובה. הוא מציין לדפדפן איפה האפליקציה צריכה להתחיל כשהיא מופעלת, ומונעת מהאפליקציה להתחיל לפעול בכל דף שהמשתמש היה בו כשהוסיף את האפליקציה למסך הבית שלו.

השדה start_url צריך להפנות את המשתמשים ישירות לאפליקציה, ולא לדף הנחיתה של המוצר. חשבו מה המשתמש ירצה לעשות מיד אחרי שהוא פותח את האפליקציה והצבו אותה שם.

background_color

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

display

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

מאפיין (property) התנהגות
fullscreen פתיחת אפליקציית האינטרנט ללא צורך בממשק משתמש של הדפדפן, והצגה של כל אזור התצוגה הזמין.
standalone פתיחה של אפליקציית האינטרנט להיראות ולהרגיש כמו אפליקציה עצמאית. האפליקציה פועלת בחלון נפרד, בנפרד מהדפדפן ומסתירה רכיבים סטנדרטיים בממשק המשתמש של הדפדפן, כמו סרגל הכתובות.
דוגמה לחלון PWA עם מסך נפרד.
ממשק המשתמש הנפרד.
minimal-ui המצב הזה דומה ל-standalone, אבל הוא מספק למשתמש קבוצה מינימלית של רכיבים בממשק המשתמש לשליטה בניווט, כמו הלחצנים 'הקודם' ו'טעינה מחדש'.
דוגמה לחלון PWA עם תצוגה מינימלית של ממשק המשתמש.
ממשק המשתמש המינימלי.
browser חוויית דפדפן רגילה.

display_override

על מנת לבחור את אופן הצגת אפליקציית האינטרנט, צריך להגדיר מצב display במניפסט, כפי שהסברנו קודם. הדפדפנים לא חייבים לתמוך בכל מצבי התצוגה, אבל הם חייבים לתמוך בשרשרת החלופית המוגדרת לפי המפרט ("fullscreen""standalone""minimal-ui""browser"). אם הם לא תומכים במצב מסוים, הם יחזרו למצב התצוגה הבא בשרשרת. במקרים נדירים, החלופות האלה עלולות לגרום לבעיות. לדוגמה, המפתח לא יכול לבקש "minimal-ui" בלי לאלץ אותו לחזור למצב התצוגה של "browser" כאשר אין תמיכה ב-"minimal-ui". בהתאם להתנהגות הנוכחית, גם אי אפשר להציג מצבי תצוגה חדשים באופן תואם לאחור, כי אין להם מקום בשרשרת החלופה.

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

הדוגמה הבאה ממחישה איך להשתמש ב-display_override. הפרטים של "window-control-overlay" לא נכללים בדף הזה.

{
  "display_override": ["window-control-overlay", "minimal-ui"],
  "display": "standalone",
}

בזמן טעינת האפליקציה, הדפדפן ינסה להשתמש קודם ב-"window-control-overlay". אם האפשרות הזו לא זמינה, הערך יוחזר לערך "minimal-ui", ולאחר מכן ל-"standalone" מהנכס display. אם אף אחת מהאפשרויות האלה לא זמינה, הדפדפן יחזור לשרשרת החלופית הרגילה.

scope

scope של האפליקציה הוא קבוצת כתובות ה-URL שהדפדפן מחשיב כחלק מהאפליקציה. scope שולט במבנה של כתובות ה-URL שכולל את כל נקודות הכניסה והיציאה לאפליקציה, והדפדפן משתמש בו כדי לקבוע מתי המשתמש יצא מהאפליקציה.

כמה הערות נוספות לגבי scope:

  • אם לא כוללים scope במניפסט, ברירת המחדל המשתמעת של scope היא כתובת ה-URL להתחלה, אבל לאחר הסרה של שם הקובץ, השאילתה והקטע.
  • המאפיין scope יכול להיות נתיב יחסי (../), או כל נתיב ברמה גבוהה יותר (/) שמאפשר להגדיל את הכיסוי של הניווטים באפליקציית האינטרנט.
  • השדה start_url חייב להיכלל בהיקף.
  • הערך start_url הוא יחסי לנתיב שמוגדר במאפיין scope.
  • start_url שמתחיל ב-/ יהיה תמיד השורש של המקור.

theme_color

השדה theme_color קובע את הצבע של סרגל הכלים, ואפשר לראות אותו בתצוגה המקדימה של האפליקציה במעבר בין המשימות. הערך של theme_color צריך להתאים לצבע העיצוב meta שצוין בכותרת המסמך.

דוגמה לחלון PWA עם צבע עיצוב בהתאמה אישית.
דוגמה לחלון PWA עם theme_color בהתאמה אישית.

theme_color בשאילתות מדיה

תמיכה בדפדפן

  • 93
  • 93
  • 106
  • 15

מקור

אפשר לשנות את theme_color בשאילתת מדיה באמצעות המאפיין media של רכיב צבע העיצוב meta. לדוגמה, אפשר להגדיר צבע אחד למצב בהיר וצבע אחר למצב כהה באופן הזה. עם זאת, לא ניתן להגדיר את ההעדפות האלה במניפסט. למידע נוסף, קרא את הבעיה w3c/manifest#975 ב-GitHub.

<meta name="theme-color" media="(prefers-color-scheme: light)" content="white">
<meta name="theme-color" media="(prefers-color-scheme: dark)"  content="black">

shortcuts

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

description

המאפיין description מתאר את מטרת האפליקציה.

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

screenshots

המאפיין screenshots הוא מערך של אובייקטים של תמונות שמייצגים את האפליקציה בתרחישי שימוש נפוצים. כל אובייקט צריך לכלול את src, את המאפיין sizes ואת type של התמונה. המאפיין form_factor הוא אופציונלי. ניתן להגדיר אותה לערך "wide" לצילומי מסך שרלוונטיים למסכים רחבים בלבד, או ל-"narrow" לצילומי מסך צרים בלבד.

ב-Chrome, התמונה צריכה לעמוד בקריטריונים הבאים:

  • הרוחב והגובה חייבים להיות לפחות 320 פיקסלים ולא יותר מ-3840 פיקסלים.
  • המאפיין המקסימלי לא יכול להיות גדול מפי 2.3 מאורך המאפיין המינימלי.
  • לכל צילומי המסך שתואמים לגורם הצורה המתאים צריך להיות אותו יחס גובה-רוחב.
    • החל מ-Chrome 109, רק צילומי מסך שבהם form_factor מוגדר ל-"wide" מוצגים במחשב.
  • החל מ-Chrome 109, המערכת מתעלמת מצילומי מסך שבהם form_factor מוגדר ל-"wide". צילומי מסך בלי form_factor עדיין מוצגים לצורך תאימות לאחור.

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

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

צילומי מסך של ממשק משתמש עשיר יותר להתקנה במחשב ובנייד.
ממשק משתמש עשיר יותר להתקנה במחשבים ובניידים.

אחרי יצירת המניפסט, צריך להוסיף את התג <link> לכל הדפים של Progressive Web App. לדוגמה:

<link rel="manifest" href="/manifest.json">

בדיקת המניפסט

כדי לוודא שהמניפסט מוגדר בצורה תקינה, צריך להשתמש בחלונית Manifest בחלונית Application ב-Chrome DevTools.

חלונית האפליקציה ב-Chrome Devtools עם כרטיסיית המניפסט שנבחרה.
אפשר לבדוק את המניפסט בכלי הפיתוח.

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

מסכי פתיחה בנייד

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

Chrome יוצר באופן אוטומטי את מסך הפתיחה מהמקורות הבאים: name, background_color ו-icons שצוינו במניפסט. על מנת ליצור מעבר חלק ממסך הפתיחה לאפליקציה, עליכם לבחור background_color באותו צבע כמו בדף הטעינה.

Chrome בוחר את הסמל שהכי מתאים לרזולוציית המכשיר של מסכי הפתיחה. ברוב המקרים מספיק להציג סמלים בגודל 192px ו-512px, אבל תוכלו להוסיף סמלים נוספים כדי להתאים אותם.

קריאה נוספת

מידע נוסף על מאפיינים אחרים שאפשר להוסיף למניפסט של אפליקציית האינטרנט זמין במסמכי התיעוד של MDN Web App Manifest.