הפעלת Handler API

שליטה על האופן שבו האפליקציה מופעלת.

ממשק ה-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.

  1. מתקינים את האפליקציה Musicr 2.0.
  2. שולחים לעצמכם קישור ביישום צ'אט של הטופס 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).
  3. לוחצים על הקישור באפליקציית הצ'אט ורואים איך Musicr 2.0 נפתחת ומנגנת את הטראק.
  4. לוחצים שוב על הקישור באפליקציית הצ'אט ורואים שלא מקבלים מופע שני של Musicr 2.0.

משוב

צוות Chromium רוצה לשמוע על החוויות שלכם עם Launch Handler API.

נשמח לקבל מידע על עיצוב ה-API

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

דיווח על בעיה בהטמעה

מצאתם באג בהטמעה של Chromium? או שההטמעה שונה מהמפרט? מדווחים על הבאג בכתובת new.crbug.com. חשוב לכלול כמה שיותר פרטים והוראות לשחזור הבאג, ולהזין Blink>AppManifest בתיבה Components.

תמיכה ב-API

האם אתם מתכננים להשתמש ב-Launch Handler API? התמיכה הציבורית שלכם עוזרת לצוות Chromium לתת עדיפות לתכונות ומראה לספקי דפדפנים אחרים עד כמה חשוב לתמוך בהן.

אפשר לשלוח ציוץ אל @ChromiumDev באמצעות ההאשטאג #LaunchHandler ולספר לנו איפה ואיך אתם משתמשים בו.

קישורים שימושיים