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