מאז השקנו את הבאנר 'הוספה למסך הבית', אנחנו פועלים כדי לתייג אפליקציות אינטרנט מתקדמות בצורה ברורה יותר ולפשט את האופן שבו המשתמשים יכולים להתקין אותן. המטרה שלנו היא לספק לחצן התקנה בסרגל הכתובות בכל הפלטפורמות, ובגרסה 68 של Chrome אנחנו מבצעים שינויים כדי להשיג את המטרה הזו.
מה ישתנה?
החל מגרסה 68 של Chrome ל-Android (גרסת יציבות מיולי 2018), לא יוצג יותר ב-Chrome הבאנר 'הוספה למסך הבית'. אם האתר עומד בקריטריונים להוספה למסך הבית, סרגל המידע המינימלי יוצג ב-Chrome. לאחר מכן, אם המשתמש לוחץ על סרגל המידע המינימלי או אם מפעילים את prompt()
באירוע beforeinstallprompt
מתוך תנועת משתמש, ב-Chrome תוצג תיבת דו-שיח מודאלית להוספה למסך הבית.
באנר A2HS Chrome 67 וגרסאות ישנות יותר
המודעות האלה מוצגות באופן אוטומטי כשהאתר עומד בקריטריונים להוספה למסך הבית, והאתר לא מבצע קריאה ל-preventDefault()
באירוע beforeinstallprompt
.
או
מוצגת על ידי קריאה ל-prompt()
באירוע beforeinstallprompt
.
סרגל מידע מינימלי Chrome 68 ואילך
הסמל מוצג כשהאתר עומד בקריטריונים להוספה למסך הביתאם המשתמש יסגור את ההודעה, היא לא תוצג שוב עד שיחלוף פרק זמן מספיק (כ-3 חודשים).
הנתון הזה מוצג גם אם preventDefault()
הופעל באירוע beforeinstallprompt
.
הטיפול הזה בממשק המשתמש יוסר בגרסה עתידית של Chrome, כשהלחצן להתקנה בתיבת החיפוש הכללית יוצג.
A2HS Dialog
האירוע מוצג על ידי קריאה ל-prompt()
מתוך תנועת משתמש באירוע beforeinstallprompt
ב-Chrome 68 ואילך.
או
מוצגת כשמשתמש מקשיב על סרגל המידע המינימלי ב-Chrome מגרסה 68 ואילך.
או
מוצגת אחרי שהמשתמש לוחץ על 'הוספה למסך הבית' בתפריט Chrome בכל הגרסאות של Chrome.
סרגל המידע המיני
סרגל המידע המינימלי הוא רכיב של ממשק המשתמש של Chrome, והאתר לא יכול לשלוט בו, אבל המשתמש יכול לסגור אותו בקלות. אחרי שהמשתמש יסגור את ההודעה, היא לא תופיע שוב עד שיחלוף פרק זמן מסוים (כרגע 3 חודשים). סרגל המידע המינימלי יופיע אם האתר עומד בקריטריונים להוספה למסך הבית, גם אם לא preventDefault()
באירוע beforeinstallprompt
.
במקום להציג למשתמש הודעה בזמן טעינת הדף (דפוס לא מומלץ לבקשות הרשאה), אפשר להציג הודעה על כך שאפשר להתקין את האפליקציה באמצעות ממשק משתמש מסוים, שבו תוצג ההודעה על התקנה בחלון קופץ. לדוגמה, ב-PWA הזה למחשב נוסף לחצן 'התקנת האפליקציה' מעל שם הפרופיל של המשתמש.
הצגת בקשה להתקנת האפליקציה בתגובה לתנועת משתמש נראית פחות כמו ספאם בעיני המשתמש, ומגדילה את הסבירות שהוא ילחץ על 'הוספה' במקום על 'ביטול'. שילוב של לחצן התקנה באפליקציה מבטיח שאפילו אם המשתמש יבחר לא להתקין את האפליקציה היום, הלחצן עדיין יהיה שם מחר או מתי שהוא יהיה מוכן להתקין.
האזנה לאירוע beforeinstallprompt
אם האתר עומד בקריטריונים להוספה למסך הבית, Chrome יפעיל אירוע beforeinstallprompt
, ישמור הפניה לאירוע וידריך את ממשק המשתמש כך שיציין שהמשתמש יכול להוסיף את האפליקציה למסך הבית.
let installPromptEvent;
window.addEventListener('beforeinstallprompt', event => {
// Prevent Chrome <= 67 from automatically showing the prompt
event.preventDefault();
// Stash the event so it can be triggered later.
installPromptEvent = event;
// Update the install UI to notify the user app can be installed
document.querySelector('#install-button').disabled = false;
});
האירוע beforeinstallprompt
לא יופעל אם האפליקציה כבר מותקנת (ראו הקריטריונים להוספה למסך הבית).
עם זאת, אם המשתמש יבטל את התקנת האפליקציה מאוחר יותר, האירוע beforeinstallprompt
יופעל שוב בכל ניווט לדף.
הצגת תיבת הדו-שיח עם prompt()
כדי להציג את תיבת הדו-שיח 'הוספה למסך הבית', מפעילים את הפעולה prompt()
על האירוע השמור מתוך תנועת משתמש. ב-Chrome תוצג תיבת הדו-שיח המודאלית, שבה המשתמשים יתבקשו להוסיף את האפליקציה שלכם למסך הבית. לאחר מכן, ממתינים להבטחה שמוחזרת על ידי המאפיין userChoice
של האירוע beforeinstallprompt
. ההבטחה מחזירה אובייקט עם המאפיין outcome
אחרי שההנחיה מוצגת והמשתמש מגיב לה.
btnInstall.addEventListener('click', () => {
// Update the install UI to remove the install button
document.querySelector('#install-button').disabled = true;
// Show the modal add to home screen dialog
installPromptEvent.prompt();
// Wait for the user to respond to the prompt
installPromptEvent.userChoice.then(choice => {
if (choice.outcome === 'accepted') {
console.log('User accepted the A2HS prompt');
} else {
console.log('User dismissed the A2HS prompt');
}
// Clear the saved prompt since it can't be used again
installPromptEvent = null;
});
});
אפשר להפעיל את prompt()
באירוע המאוחר רק פעם אחת. אם המשתמש לוחץ על 'ביטול' בתיבת הדו-שיח, צריך להמתין עד שהאירוע beforeinstallprompt
יופעל במעבר לדף הבא. בניגוד לבקשות הרשאה רגילות, לחיצה על 'ביטול' לא תמנע קריאות עתידיות ל-prompt()
, כי הקריאה הזו חייבת להתבצע במסגרת תנועת משתמש.
משאבים נוספים
מידע נוסף זמין במאמר באנרים להתקנת אפליקציות, כולל:
- פרטים על האירוע
beforeinstallprompt
- מעקב אחר התגובה של המשתמש להנחיה להוספה למסך הבית
- מעקב אחרי ההתקנה של האפליקציה
- איך בודקים אם האפליקציה פועלת כאפליקציה מותקנת