הפעלת Handler API

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

באמצעות Launch Handler API אפשר לקבוע איך האפליקציה תושק. לדוגמה, אם היא תשתמש בחלון קיים או בחלון חדש, ואם החלונית שנבחרה תועבר לכתובת ה-URL של ההפעלה. בדומה ל-File Handling API, גם כאן המערכת תוסיף אובייקט LaunchParams לתור ב-window.launchQueue של הדף שהושקה.

הסטטוס הנוכחי

שלב סטטוס
1. יצירת הסבר הושלם
2. יצירת טיוטה ראשונית של המפרט הושלם
3. איסוף משוב וביצוע שינויים בעיצוב הושלם
4. גרסת מקור לניסיון. הושלם
5. השקה הושלם

שימוש ב-Launch Handler API

תמיכה בדפדפנים

תמיכה בדפדפנים

  • Chrome: ‏ 110.
  • Edge: ‏ 110.
  • Firefox: לא נתמך.
  • Safari: לא נתמך.

מקור

ממשקים

ב-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.

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

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