הפעלת Handler API

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

באמצעות Launch Handler API אפשר לקבוע איך האפליקציה תושק. לדוגמה, אם היא תשתמש בחלון קיים או בחלון חדש, ואם החלונית שנבחרה תועבר לכתובת ה-URL של ההפעלה. בדומה ל-File Handing 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 ולספר לנו איפה ואיך אתם משתמשים בו.

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