חבילות WebAPK ב-Android

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

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

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

מסנני Intent ב-Android

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

כדאי לשקול את הmanifest.json החלקית הבא:

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

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

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

<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, הוא יזוהה בכוונה וייפתח ב-Progressive Web App.

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

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

כדאי לשקול את הmanifest.json החלקית הבא:

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

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

כמו קודם, ה-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, מה קורה כשלא מגדירים את ההיקף ואיך אפשר להשתמש בו כדי להגדיר את היקף האפליקציה.

ניהול הרשאות

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

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

למרות שאפליקציית Progressive Web App מותקנת דרך APK, דפדפן Chrome משתמש בפרופיל הנוכחי כדי לאחסן נתונים כלשהם והוא לא יהיה מופרד. כך אפשר לשתף את חוויית המשתמש בין הדפדפן לאפליקציה שמותקנת. קובצי cookie משותפים ופעילים, אפשר לגשת לכל אחסון בצד הלקוח וה-Service Worker מותקן ומוכן לפעולה.

מתבצע עדכון של ה-WebAPK

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

שאלות נפוצות

באילו סמלים נעשה שימוש כדי ליצור את מסך הפתיחה? :
מומלץ להוסיף לפחות שני סמלים: 192px ו-512px למסך הפתיחה. שמענו שהסמלים במסך הפתיחה היו קטנים מדי. בחבילות WebAPK שנוצרו ב-Chrome 71 ואילך יוצג סמל גדול יותר במסך הפתיחה. לא נדרשת כל פעולה, כל עוד יוצגו הסמלים המומלצים.
מה קורה אם המשתמש כבר התקין את האפליקציה המקורית עבור האתר?
כמו שמוסיפים למסך הבית היום, המשתמשים יוכלו להוסיף אתר בנפרד מאפליקציות מקוריות. אם אתם מצפים שהמשתמשים יתקינו את שניהם, מומלץ להבדיל בין הסמל או השם של האתר לבין האפליקציה המקורית.
האם האחסון של האתר המותקן שלי ינוקה אם המשתמש ינקה את המטמון של Chrome?
כן.
האם האפליקציה שלי תותקן מחדש כשאקבל מכשיר חדש?
לא בשלב זה, אבל לדעתנו זה תחום חשוב ואנחנו בוחנים דרכים חדשות לעשות זאת.
איך מטפלים בהרשאות? האם אראה את ההודעה של Chrome או של Android?
ההרשאות עדיין ינוהלו דרך Chrome. המשתמשים יראו הודעות מ-Chrome למתן הרשאות, ויוכלו לערוך אותן בהגדרות Chrome.
באילו גרסאות של Android זה יפעל?
אפשר להתקין אפליקציות מסוג Progressive Web App בכל הגרסאות של Android, שבהן פועל Chrome ל-Android, ובמיוחד ב-Jelly Bean ואילך.
האם נעשה שימוש ב-WebView?
לא, האתר נפתח בגרסת Chrome שממנה המשתמש הוסיף את האתר.
האם ניתן להעלות את ה-APKs שנוצרו לחנות Play?
לא. אם אתם רוצים להעלות APK משלכם, כדאי לקרוא על פעילויות Trusted Web.
האם הפריטים האלה מופיעים בחנות Play?
לא. אם אתם רוצים להעלות APK משלכם לפרסום בחנות Play, כדאי לעיין במאמר פעילויות באינטרנט מהימנים.
אם יש לי דפדפן אחר ב-Android, האם אוכל לקבל את תהליך ההתקנה החלק הזה? :
אנחנו עובדים על זה. אנחנו מחויבים להפוך את הקטע הזה לזמין לכל הדפדפנים ב-Android, ובקרוב יהיו לנו פרטים נוספים.