חבילות WebAPK ב-Android

כשהמשתמש מוסיף את ה-PWA שלכם למסך הבית ב-Android, ‏ Chrome יוצר בשבילכם באופן אוטומטי קובץ APK, שלפעמים אנחנו קוראים לו WebAPK. התקנה באמצעות APK מאפשרת לאפליקציה להופיע במרכז האפליקציות, בהגדרות האפליקציות של Android ולרשום קבוצה של מסנני כוונות.

התקנה של PWA ב-Android עושה יותר מאשר רק להוסיף את ה-Progressive Web App למסך הבית של המשתמש. ‫Chrome יוצר ומתקין באופן אוטומטי קובץ APK מיוחד של האפליקציה. לפעמים אנחנו קוראים לזה WebAPK. התקנה באמצעות APK מאפשרת לאפליקציה להופיע במרכז האפליקציות, בהגדרות האפליקציות של Android ולרשום קבוצה של מסנני Intent.

כדי ליצור את קובץ ה-WebAPK, Chrome בודק את קובץ מניפסט של אפליקציה ומטא-נתונים אחרים. כשמזוהה עדכון במניפסט, צריך ליצור APK חדש ב-Chrome.

מסנני Intent ב-Android

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

נבחן את manifest.json החלקי הבא:

"start_url": "/",
"display": "standalone",

כשמפעילים אפליקציית אינטרנט שמשתמשת בה ממרכז האפליקציות, היא נפתחת כhttps://example.com/אפליקציה עצמאית, ללא כרום של דפדפן.

קובץ ה-WebAPK יכלול את מסנני הכוונות הבאים:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/" />
</intent-filter>

אם המשתמש לוחץ על קישור באפליקציה מותקנת כדי לפתוח את https://example.com/read, הקישור יזוהה על ידי הכוונה וייפתח באפליקציית האינטרנט המתקדמת.

שימוש ב-scope כדי להגביל מסנני Intent

אם אתם לא רוצים שאפליקציית ה-Progressive Web App שלכם תטפל בכל כתובות ה-URL באתר, אתם יכולים להוסיף את המאפיין scope לקובץ המניפסט של אפליקציית האינטרנט. המאפיין scope מציין ל-Android לפתוח את אפליקציית האינטרנט רק אם כתובת ה-URL תואמת ל-origin + scope. היא מאפשרת לכם לשלוט בכתובות ה-URL שיטופלו על ידי האפליקציה ובכתובות ה-URL שייפתחו בדפדפן. האפשרות הזו שימושית אם האפליקציה ותוכן אחר שלא שייך לאפליקציה נמצאים באותו דומיין.

נבחן את manifest.json החלקי הבא:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

כשמפעילים אותו ממרכז האפליקציות, הוא נפתח כhttps://example.com/app/ אפליקציה עצמאית, בלי כרום של הדפדפן.

כמו קודם, ה-WebAPK שנוצר יכלול מסנן Intent, אבל עם מאפיין android:pathPrefix שונה ב-AndroidManifest.xml של ה-APK:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/app/" />
</intent-filter>

הנה כמה דוגמאות:

מה מומלץ לעשות

https://example.com/app/ – תוך /app/

מה מומלץ לעשות

https://example.com/app/read/book – תוך /app/

מה אסור לעשות

https://example.com/help/ – לא ב-/app/

מה אסור לעשות

https://example.com/about/ – לא ב-/app/

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

ניהול הרשאות

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

ניהול האחסון ומצב האפליקציה

גם אם אפליקציית האינטרנט המתקדמת מותקנת באמצעות APK, ‏ Chrome משתמש בפרופיל הנוכחי כדי לאחסן את הנתונים, והם לא יופרדו. כך נוצר חוויה משותפת בין הדפדפן לבין האפליקציה המותקנת. קובצי ה-Cookie משותפים ופעילים, יש גישה לכל האחסון בצד הלקוח, ו-Service Worker מותקן ומוכן לשימוש.

עדכון של WebAPK

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

שאלות נפוצות

באילו סמלים משתמשים כדי ליצור את מסך הפתיחה?

מומלץ לספק לפחות שני גדלים של סמלים למסך הפתיחה: 192px ו-512px. קיבלנו מכם משוב על כך שהסמלים במסך הפתיחה קטנים מדי. ב-WebAPKs שנוצרו ב-Chrome 71 ואילך יוצג סמל גדול יותר במסך הפתיחה. לא נדרשת כל פעולה, בתנאי שסיפקתם את הסמלים המומלצים.

מה קורה אם המשתמש כבר התקין את אפליקציית הנייטיב של האתר?

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

האם האחסון של האתר המותקן יימחק אם המשתמש ינקה את המטמון של Chrome?

כן.

האם האפליקציה שלי תותקן מחדש כשאקבל מכשיר חדש?

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

איך מתנהלות ההרשאות? האם תופיע ההודעה של Chrome או של Android?

ההרשאות ימשיכו להיות מנוהלות דרך Chrome. המשתמשים יראו את ההודעות ב-Chrome שבהן הם מתבקשים לתת הרשאות, והם יוכלו לערוך אותן בהגדרות של Chrome.

באילו גרסאות של Android זה יעבוד?

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

האם נעשה שימוש ב-WebView?

לא, האתר נפתח בגרסת Chrome שממנה המשתמש הוסיף את האתר.

האם אפשר להעלות את קובצי ה-APK שנוצרו לחנות Play?

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

האם הם רשומים בחנות Play?

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

אני מפתח של דפדפן אחר ב-Android. האם אוכל להשתמש בתהליך ההתקנה החלק הזה?

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