שליטה באופן שבו האפליקציה מופעלת.
ממשק ה-Launch Handler API מאפשר לקבוע איך האפליקציה תופעל. לדוגמה, אם ייעשה שימוש בחלון קיים או בחלון חדש, ואם החלון שנבחר מנווט לכתובת ה-URL להפעלה. בדומה ל-File Handing API, גם אובייקט LaunchParams
נכנס לתור ב-window.launchQueue
של הדף שנפתח.
הסטטוס הנוכחי
שלב | סטטוס |
---|---|
1. יצירת הסבר | הושלם |
2. יצירת טיוטה ראשונית של מפרט | הושלם |
3. אוספים משוב וחוזרים על העיצוב | התשובה מלאה |
4. גרסת מקור לניסיון. | התשובה מלאה |
5. הפעלה | הושלם |
שימוש ב-Launch Handler API
תמיכת דפדפן
הפעלת Handler זמינה רק ב-ChromeOS.
ממשקים
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 בפעולה בהדגמה של Handler של PWA. הקפידו לבדוק את קוד המקור של האפליקציה כדי לראות איך היא משתמשת ב-Launch Handler API.
- מתקינים את האפליקציה Musicr 2.0 במכשיר ChromeOS.
- שולחים לעצמכם קישור באפליקציית צ'אט בפורמט
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
בתיבה רכיבים.
Glitch היא אפשרות טובה לשיתוף תגובות מהירות וקלות.
הצגת תמיכה ב-API
האם בכוונתך להשתמש ב-Launch Handler API? התמיכה הציבורית שלכם עוזרת לצוות Chromium לתעדף פיצ'רים ומראה לספקי דפדפנים אחרים עד כמה חשוב לתמוך בהם.
שלחו ציוץ אל @ChromiumDev בעזרת ה-hashtag #LaunchHandler
, וספרו לנו איפה אתם משתמשים בו ואיך אתם משתמשים בו.