שליטה על אופן ההשקה של האפליקציה.
באמצעות Launch Handler API אפשר לקבוע איך האפליקציה תושק. לדוגמה, אם היא תשתמש בחלון קיים או בחלון חדש, ואם החלונית שנבחרה תועבר לכתובת ה-URL של ההפעלה. בדומה ל-File Handling API, גם כאן המערכת תוסיף אובייקט LaunchParams
לתור ב-window.launchQueue
של הדף שהושקה.
הסטטוס הנוכחי
שלב | סטטוס |
---|---|
1. יצירת הסבר | הושלם |
2. יצירת טיוטה ראשונית של המפרט | הושלם |
3. איסוף משוב וביצוע שינויים בעיצוב | הושלם |
4. גרסת מקור לניסיון. | הושלם |
5. השקה | הושלם |
שימוש ב-Launch Handler API
תמיכה בדפדפנים
ממשקים
ב-Launch Handler API מוגדרים שני ממשקים חדשים.
LaunchParams
: אובייקט שמכיל את ה-targetURL
שצריך לטפל בו על ידי הצרכן.
LaunchQueue
: משימות יופעלו בתור עד שהצרכן שצוין יטפל בהן.
המשתנה launch_handler
במניפסט
כדי לציין באופן דקלרטיבי את התנהגות ההפעלה של האפליקציה, מוסיפים את חבר המניפסט launch_handler
למניפסט. יש לו שדה משנה אחד שנקרא client_mode
. היא מאפשרת לקבוע אם יופעל לקוח חדש או לקוח קיים, ואם יהיה אפשר לנווט בלקוח הזה. בדוגמה הבאה מוצג קובץ עם ערכים לדוגמה, שתמיד יפנו את כל ההפעלות ללקוח חדש.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
אם לא צוין ערך, launch_handler
מוגדר כברירת מחדל כ-{"client_mode": "auto"}
. הערכים המותרים לשדות המשנה הם:
client_mode
:navigate-new
: המערכת יוצרת הקשר חדש של גלישה בחלון של אפליקציית אינטרנט כדי לטעון את כתובת ה-URL היעד של ההשקה.navigate-existing
: המשתמש יועבר לכתובת ה-URL של היעד של ההשקה, בהתאם להקשר הגלישה שבו הוא נמצא לאחרונה בחלון של אפליקציית האינטרנט.focus-existing
: ההקשר של הגלישה שבו בוצעה האינטראקציה האחרונה בחלון של אפליקציית האינטרנט נבחר לטיפול בהפעלה. אובייקטLaunchParams
חדש עםtargetURL
שמוגדר לכתובת ה-URL של ההשקה יתווסף לתור ב-window.launchQueue
של המסמך.auto
: ההתנהגות תלויה בסוכן המשתמש, שצריך להחליט מה מתאים ביותר לפלטפורמה. לדוגמה, במכשירים ניידים יש תמיכה רק בלקוחות יחידים, ולכן צריך להשתמש ב-existing-client
. לעומת זאת, במחשבים יש תמיכה בכמה חלונות, ולכן צריך להשתמש ב-navigate-new
כדי למנוע אובדן נתונים.
המאפיין client_mode
מקבל גם רשימה (מערך) של ערכים, והמערכת תשתמש בערך החוקי הראשון. כך אפשר להוסיף ערכים חדשים למפרט בלי לשבור את תאימות לאחור להטמעות קיימות.
לדוגמה, אם הערך ההיפותטי "focus-matching-url"
יתווסף, אתרים יצטרכו לציין את הערך "client_mode": ["focus-matching-url", "navigate-existing"]
כדי להמשיך לשלוט בהתנהגות של דפדפנים ישנים שלא תומכים ב-"focus-matching-url"
.
שימוש ב-window.launchQueue
בקוד הבא, הפונקציה extractSongID()
מחלצת songID
מכתובת ה-URL שהועברה בזמן ההפעלה. הפונקציה הזו משמשת להפעלת שיר ב-PWA של נגן מוזיקה.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
הדגמה (דמו)
בדמו של Launch Handler API תוכלו לראות איך ה-API פועל. חשוב לבדוק את קוד המקור של האפליקציה כדי לראות איך היא משתמשת ב-Launch Handler API.
- מתקינים את האפליקציה Musicr 2.0.
- שולחים לעצמכם קישור באפליקציית צ'אט בפורמט
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (אפשר להתאים אישית אתhttps://example.com/music.mp3
לכל כתובת URL שמפנה לקובץ אודיו, למשלhttps://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - לוחצים על הקישור באפליקציית הצ'אט ומבחינים שMusicr 2.0 נפתחת והטראק מושמע.
- לוחצים שוב על הקישור באפליקציית הצ'אט, ומבחינים שלא נוצרת מופע נוסף של Musicr 2.0.
משוב
צוות Chromium רוצה לשמוע על החוויה שלכם עם Launch Handler API.
תיאור של עיצוב ה-API
האם יש משהו ב-API שלא פועל כמצופה? או אולי חסרות שיטות או מאפיינים שאתם צריכים כדי להטמיע את הרעיון? יש לכם שאלות או הערות לגבי מודל האבטחה? אתם יכולים לשלוח דיווח על בעיה במפרט במאגר GitHub המתאים, או להוסיף את המחשבות שלכם לבעיה קיימת.
דיווח על בעיה בהטמעה
מצאתם באג בהטמעה של Chromium? או שההטמעה שונה מהמפרט?
שולחים דיווח על באג בכתובת new.crbug.com. חשוב לכלול כמה שיותר פרטים, הוראות לשחזור הבעיה ולהזין Blink>AppManifest
בתיבה Components.
Glitch הוא כלי מצוין לשיתוף של ריפרודוקציות מהירות.
תמיכה ב-API
מתכננים להשתמש ב-Launch Handler API? התמיכה הציבורית שלכם עוזרת לצוות Chromium לתת עדיפות לתכונות, ומראה לספקי דפדפנים אחרים כמה חשובה התמיכה בהן.
אפשר לשלוח ציוץ אל @ChromiumDev באמצעות ההאשטאג #LaunchHandler
ולספר לנו איפה ואיך אתם משתמשים בו.