במדריך הזה מוסבר איך להעביר אפליקציה של מקלט Cast גרסה 2 לגרסה האחרונה של אתר האינטרנט האפליקציה המקבלת.
גרסת ה-SDK החדשה של Cast Application Framework (CAF), שנקראת Web Acceptr v3, שדרוג משמעותי מ-Receiver v2 SDK. ה-SDK של מקלט האינטרנט מספק SDK קל ויעיל לפיתוח אפליקציות של מקלט אינטרנטי מדיה.
מכשיר האינטרנט 'מקלט אינטרנט' מספק API שתואם יותר לשולח ה-CAF החדש ממשקי API. הוא מספק שילוב מלא של נגן (MPL ו-Saka) הטמעת מדיה ותמיכה ב-Cast וב-Google Assistant פקודות קוליות. CAF SDK מספק גם ממשק משתמש שמוגדר כברירת מחדל, שאותו אפשר לעצב בקלות באמצעות CSS, ושירות קישור נתונים כדי לפשט את ההטמעה של ממשק המשתמש.
למה כדאי לבצע העברה
על ידי העברת אפליקציה של גרסה 2 למקלט באינטרנט, הרבה קוד מבצע אפשר לחסל את הנגן, כך שתוכלו להתרכז בכתיבה לוגיקה עסקית ספציפית לאפליקציה.
ב-CAF משולבים באופן חלק נגני MPL ו-Saka כדי לתמוך במגוון רחב יותר של סוגי תוכן, כולל - HTTP Live Streaming (TS ו-CMAF), MPEG-DASH, Smooth סטרימינג וסוגים הנתמכים על ידי מאפיין המקור של רכיב מדיה (MP3, MP4, גלידה וכו'). הרשימה המלאה זמינה במדיה נתמכת ל-Google Cast. בשלב הזה, ב-CAF אין תמיכה בנגן שסופק על ידי משתמשים.
מעבר ל-CAF תוסיף תמיכה בשליטה באמצעות הקול עם Google Assistant. כל פקודה קולית חדשה של Google Assistant תתמוך באופן אוטומטי כאשר באמצעות CAF.
בנוסף לתמיכה בפקודות מדיה חדשות, כמו "שינוי טראקים לפי שפה" ו'שינוי קצב ההפעלה' – CAF מספק גם תורים טובים יותר ומודעות מובנות יותר תמיכה ותמיכה בזמן אמת.
מה השתנה?
ה-Web Acceptr API מנסה לפעול בהתאם למוסכמות שנהגו ליישם שולחי CAF עבור Android ו iOS, והיא די שונה מ-v2.
במקלט האינטרנט נעשה שימוש במרחב שמות חדש
cast.framework
במקום להשתמש במרחב השמות cast.receiver
לכל ממשקי ה-API החשופים. רבים מ-
אובייקטי הנתונים ששימשו את גרסה 2 זהים ב-CAF והם נחשפים
ה
cast.framework.messages
מרחב השמות (בדרך כלל הם היו קטנים מ-cast.receiver.media
).
שירותי CAF הבאים מוחלפים בשירותי CAF המתאימים:
- הכיתה אחת (
CastReceiverManager
) הוחלפה על ידיCastReceiverContext
שהוא סינגלטון שמנהל את הסשן של הפעלת Cast, השולחים, שולחים הודעות ואירועי מערכת גלובליים.CastReceiverOptions
יכול לשמש כדי לספק אפשרויות אפליקציה גלובליות (כמו 'תור', 'מקלט' גרסה, הגדרת הפעלה וכו') להקשר. - הכיתה אחת (
MediaManager
) הוחלפה על ידיPlayerManager
שהיא תכונה שלCastReceiverContext
סינגלטון, והוא מנהל את הסשן של המדיה, בקשות המדיה, בקשות קוליות של Assistant (CommandAndControlManager
בגרסה 2), ומפעילה אירועי מדיה. הגדרה לשחקנים הערך (cast.player.api.Host
ב-MPL) סופק על ידיPlaybackConfig
, שניתן לספק באופן גלובלי או לפי בקשת טעינה.
השדה PlayerManager
חושף גם את המחלקות החדשות של חשבון הניהול המשני:
TextTracksManager
- ניהול רצועות טקסט של מדיה.AudioTracksManager
– ניהול טראקים של אודיו.QueueManager
- ניהול התור.BreakManager
– ניהול המודעות.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Set global options.
const options = new cast.framework.CastReceiverOptions();
options.versionCode = DEVELOPERS_APP_VERSION;
context.start(options);
הלוגיקה העסקית של המקבל
גורמים המטפלים באירועים שנחשפו למודעות של מקלט גרסה 2 (כמו CastReceiverManager.onReady
או
MediaManager.onLoad
) כדי להוסיף לוגיקה עסקית. ב-CAF, הגורמים המטפלים באירועים
הוחלפו על ידי פונקציות event listener
(CastReceiverContext.addEventListener
)
וכלים ליירוט הודעות
(PlayerManager.setMessageInterceptor
).
למקלט באינטרנט יכולים להיות מספר פונקציות event listener לאירוע מסוים (ה-listener)
לא משפיע על האירוע), וכלי יירוט אחד לכל הודעה. המיירט
יכול לעדכן את הבקשה או לטפל בה (להחזיר בקשה ששונתה, הצלחה
או הודעת שגיאה), והוא יכול להיות handler אסינכרוני שמחזיר הבטחה.
מיירט בקשות העומס הוא המקום הנפוץ ביותר להוספת לוגיקה ספציפית לאפליקציה. בבקשות טעינה משולח, העומס מכשיר יירוט יכול להמיר את מזהה התוכן לכתובת URL של תוכן. מיירט העומסים מופעלת גם לבקשות טעינה מראש ובקשות לשמירה מראש אם אין מיירט מפורש היה נתון לטעינה מראש או לשמירה מראש.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
// Resolve entity to content id
if (request.media.entity && !request.media.contentId) {
return getMediaByEntity(request.media.entity).then(
media => {
request.media.contentId = media.url;
return request;
});
}
return request;
});
גם ה-handler של סטטוס המדיה המותאם אישית גרסה 2 מוחלף בהודעה
מכשיר יירוט להודעה של סטטוס המדיה. אפליקציות של מקבלי אינטרנט שלא רוצים
חשיפה של כתובת URL של מדיה בסטטוס המדיה יכולה לספק מקודד של כתובת URL
(PlayerManager.setMediaUrlResolver
),
שמספק את כתובת ה-URL של המדיה לבקשת טעינה. כתובת ה-URL הזו נמצאת בשימוש על ידי CAF
באופן פנימי ולא מצוין בסטטוס המדיה.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
אירועים
המקלט באינטרנט מספק מערך נרחב של אירועים גם מ-
CastReceiverContext
וגם
PlayerManager
לאפליקציות של מקבלי אינטרנט יכולים להיות כמה מאזינים לכל אירוע, וגם
יכול גם לספק האזנה אחת למספר אירועים. (ראו
cast.framework.events.category
לקבוצות מסוימות של אירועים).
האירועים כוללים כל בקשה של משתמש, התקדמות ההפעלה, עיבוד נגנים ועוד אירוע של רכיב מדיה ברמה נמוכה (CAF לא חושף את רכיב המדיה עצמו).
האפליקציה 'מקלט אינטרנט' יכולה להוסיף פונקציות event listener לפעול על פיהן (לדוגמה, להוסיף טקסט עוקב אחר ההגדרה בסיום הטעינה), או לצורכי ניתוח נתונים.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
אפיק של הודעות בהתאמה אישית
CAF לא חושף את אפיק ההודעות ב-API, אלא מספק
CastReceiverContext.addCustomMessageListener
כדי להוסיף האזנה להודעות למרחב שמות ספציפי (אחד בלבד לכל מרחב שמות) וגם
CastReceiverContext.sendCustomMessage
כדי לשלוח הודעה במרחב שמות. צריך להצהיר על כל מרחבי השמות לפני
להפעיל את מקלט האינטרנט (כלומר, לפני הקריאה
CastReceiverContext.start
).
אפשר להצהיר על מרחבי השמות באמצעות
להוסיף להם האזנה להודעה או שניתן לספק להם כאפשרות התחלה
CastReceiverOptions.customNamespaces
const options = new cast.framework.CastReceiverOptions();
options.customNamespaces = {
CUSTOM_NS: cast.framework.system.MessageType.JSON
};
context.start(options);
context.sendCustomMessage(CUSTOM_NS, {
type: 'status'
message: 'Playing'
});
ממשק משתמש המוגדר כברירת מחדל
CAF מספק ממשק משתמש המוגדר כברירת מחדל במקלט אינטרנט, שמציג סרגל התקדמות של הפעלה
מטא-נתונים של מדיה לפי הצורך. ממשק המשתמש שמוגדר כברירת מחדל מסופק כרכיב מותאם אישית
(<cast-media-player>
)
שאפשר לעצב באמצעות עיצוב דמוי CSS.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
כדי לבצע התאמה אישית נוספת, אפליקציה של Web מקבלr יכולה להטמיע ממשק משתמש משלה.
מקלט האינטרנט מספק את
cast.framework.ui.PlayerDataBinder
class כדי לעזור לקשר אובייקט של ממשק משתמש למצב ההפעלה של מקלט האינטרנט.