שליטה על האופן שבו האפליקציה מופעלת.
ממשק ה-API של Launch Handler מאפשר לכם לשלוט באופן ההפעלה של האפליקציה, למשל אם היא תשתמש בחלון קיים או בחלון חדש, ואם החלון שנבחר ינווט לכתובת ה-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
manifest member למניפסט. יש לו שדה משנה אחד שנקרא 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 בפעולה בהדגמה של Launch Handler ל-PWA. כדאי לעיין בקוד המקור של האפליקציה כדי לראות איך היא משתמשת ב-Launch Handler API.
- מתקינים את האפליקציה Musicr 2.0.
- שולחים לעצמכם קישור ביישום צ'אט של הטופס
https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3
. (אפשר להתאים אישית אתhttps://example.com/music.mp3
לכל כתובת URL שמפנה לקובץ אודיו, למשלhttps://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav
). - לוחצים על הקישור באפליקציית הצ'אט ורואים איך Musicr 2.0 נפתחת ומנגנת את הטראק.
- לוחצים שוב על הקישור באפליקציית הצ'אט ורואים שלא מקבלים מופע שני של Musicr 2.0.
משוב
צוות Chromium רוצה לשמוע על החוויות שלכם עם Launch Handler API.
נשמח לקבל מידע על עיצוב ה-API
האם יש משהו ב-API שלא פועל כמו שציפית? או שיש שיטות או מאפיינים חסרים שצריך להטמיע כדי לממש את הרעיון? יש לך שאלה או הערה לגבי מודל האבטחה? אפשר לפתוח בעיה במפרט במאגר GitHub המתאים, או להוסיף את המחשבות שלכם לבעיה קיימת.
דיווח על בעיה בהטמעה
מצאתם באג בהטמעה של Chromium? או שההטמעה שונה מהמפרט? מדווחים על הבאג בכתובת new.crbug.com. חשוב לכלול כמה שיותר פרטים והוראות לשחזור הבאג, ולהזין Blink>AppManifest
בתיבה Components.
תמיכה ב-API
האם אתם מתכננים להשתמש ב-Launch Handler API? התמיכה הציבורית שלכם עוזרת לצוות Chromium לתת עדיפות לתכונות ומראה לספקי דפדפנים אחרים עד כמה חשוב לתמוך בהן.
אפשר לשלוח ציוץ אל @ChromiumDev באמצעות ההאשטאג #LaunchHandler
ולספר לנו איפה ואיך אתם משתמשים בו.