כשהמשתמש מוסיף את Progressive Web App למסך הבית שלו ב-Android, דפדפן Chrome יוצר בשבילך APK באופן אוטומטי, שאנחנו קוראים לו לפעמים WebAPK. התקנה באמצעות קובץ APK מאפשרת לאפליקציה להופיע במרכז האפליקציות, בהגדרות האפליקציות של Android ולרשום קבוצה של מסנני כוונות.
התקנת 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
כדי להגביל מסנני כוונה
אם אתם לא רוצים שהאפליקציה לניהול אתר דינמי לטלפונים ניידים לטפל בכל כתובות ה-URL באתר, תוכלו להוסיף את המאפיין scope
למניפסט של אפליקציית האינטרנט. הנכס scope
מורה ל-Android לפתוח את אפליקציית האינטרנט רק אם כתובת ה-URL תואמת ל-origin
+ scope
. היא מאפשרת לכם לקבוע אילו כתובות URL יטופלו על ידי האפליקציה ואילו ייפתח בדפדפן.
האפשרות הזו שימושית כשהאפליקציה שלכם ותוכן אחר שאינו אפליקציה נמצאים באותו דומיין.
נבחן את manifest.json
החלקי הבא:
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
כשמריצים את האפליקציה ממרכז האפליקציות, https://example.com/app/
ייפתח כאפליקציה עצמאית ללא Chrome בדפדפן.
כמו קודם, קובץ ה-WebAPK שנוצר יכלול מסנן כוונה, אבל עם מאפיין 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/
– not in /app/
https://example.com/about/
– not in /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, ובקרוב נשלח פרטים נוספים.