במדריך הזה מוסבר איך להעביר את גרסה 2 של אפליקציית Chromecast Caster לאפליקציה העדכנית ביותר של Web Weber.
ערכת ה-SDK החדשה ל-Cast Application Framework (CAF), שנקראת גם Web נמעניםer v3, היא שדרוג משמעותי של SDK המקבל v2 SDK. ה-Web Tuner SDK מספק SDK פשוט ויעיל לפיתוח אפליקציות של מקלט אינטרנט.
מקלט האינטרנט מספק ממשק API שמתאים יותר לממשקי ה-API החדשים של שולחי CAF. יש בו שילוב מלא של נגן (MPL ו-Shaka) והטמעה ותמיכה מלאים במדיה ב-Cast ובפקודות הקוליות של Google Assistant. ממשק ה-SDK של CAF מספק גם ממשק משתמש כברירת מחדל שאפשר לעצב בקלות באמצעות CSS, וגם שירות מחייב נתונים שמפשט את ההטמעה של ממשק המשתמש.
למה להעביר?
כשאתם מעבירים אפליקציה של מקלט v2 למקלט אינטרנט, אתם יכולים לבטל הרבה קוד שקשור לשחקן כדי שתוכלו להתמקד בכתיבת לוגיקה עסקית ספציפית לאפליקציה.
CAF משלב באופן חלק נגני MPL ו-Shake כדי לתמוך במגוון רחב יותר של סוגי תוכן, כולל סטרימינג בשידור חי ב-HTTP (TS ו-CMAF), MPEG-DASH, סטרימינג חלק וסוגים נתמכים של נכס המקור של רכיב המדיה (MP3, MP4, Icecast וכו'...). הרשימה המלאה זמינה במאמר מדיה נתמכת עבור Google Cast. בשלב זה, אין תמיכה ב-CFA – נגן שסופק על ידי המשתמש.
המעבר ל-CAF יוסיף תמיכה לשליטה קולית באמצעות Google Assistant. כל פקודה קולית חדשה עם Google Assistant תהיה נתמכת באופן אוטומטי כשאתם משתמשים ב-CAF.
בנוסף לתמיכה בפקודות מדיה חדשות – כמו "שינוי טראקים לפי שפה" ו"שינוי שיעור ההפעלה" – גם ב-CAF יש גישה טובה יותר ל'הבאים בתור', תמיכה מובנית במודעות ותמיכה בזמן אמת.
מה השתנה?
ה-API של מקלט האינטרנט מנסה ליישם את המוסכמות שהוצגו על ידי שולחי CAF עבור Android ו-iOS, והוא שונה לחלוטין מגרסה 2.
מקלט האינטרנט משתמש במרחב שמות חדש, cast.framework
, במקום מרחב שמות cast.receiver
לכל ממשקי ה-API שנחשפים. רבים מאובייקטי הנתונים שבהם השתמשו ב-v2 הם זהים ב-CAF ונחשפים במרחב השמות cast.framework.messages
(הם היו בעיקר מתחת ל-cast.receiver.media
).
שירותי v2 הבאים מוחלפים בשירותי CAF תואמים:
- כיתה
CastReceiverManager
תוחלף על ידיCastReceiverContext
, שהיא יחידה בודדת שמנהלת את סשן ההעברה, את השולחים, את שליחת ההודעות המותאמות אישית ואת אירועי המערכת הגלובלית. אפשר להשתמש בשדהCastReceiverOptions
כדי לספק אפשרויות גלובליות של אפליקציות (כמו 'הבאים בתור', 'מקלט לצד השני', 'הגדרת הפעלה' וכו'). - כיתה
MediaManager
מוחלפת על ידיPlayerManager
, שהוא נכס של ה-singleon שלCastReceiverContext
, והוא מנהל את הפעלת המדיה, בקשות המדיה, הבקשות הקוליות של Google Assistant (CommandAndControlManager
בגרסה 2) ומפעיל אירועי מדיה. ההגדרות לנגנים (cast.player.api.Host
ב-MPL) מסופקות על ידיPlaybackConfig
, ואפשר לספק אותן בכל העולם או בבקשת טעינה.
גם ב-PlayerManager
יש גישה לכיתות החדשות של תת-חשבון MCC:
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);
הלוגיקה העסקית של המקבל
רכיבי handler של אירועים שנחשפו בגרסה 2 של המקבל (כמו CastReceiverManager.onReady
או MediaManager.onLoad
) כדי להוסיף לוגיקה עסקית. ב-CAD מחליפים את רכיבי ה-handler של אירועים על ידי listener של אירוע (CastReceiverContext.addEventListener
) ומיירטים של הודעות (PlayerManager.setMessageInterceptor
). למקלטי האינטרנט יכולים להיות מספר מאזינים לאירוע (ה-listener לא משפיע על האירוע) ומייבש אחד לכל הודעה. כלי היירוט יכול לעדכן את הבקשה או לטפל בה (החזרה של בקשה ששונתה, הודעת הצלחה או הודעת שגיאה), והוא יכול להיות גורם handler אסינכרוני שמחזיר הבטחה.
היישומון של בקשת טעינה הוא המקום הנפוץ ביותר להוספת לוגיקה ספציפית לאפליקציה. עבור בקשות טעינה משולח, מיירוט הטעינה יכול להמיר את מזהה התוכן לכתובת האתר של התוכן. כלי הפחתת העומסים נקרא גם לבקשות טעינה מראש ובקשות לשמירה מראש, אם לא סופק ייפוי כוח מפורש עבור טעינה מראש או טעינה מראש.
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 של סטטוס המדיה בהתאמה אישית v2 גם מוחלף בווידג'ט הודעות להודעה של סטטוס המדיה. אפליקציות של מקלטי אינטרנט שלא רוצים לחשוף את כתובת ה-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 של ההודעות ב-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>
להתאמה אישית נוספת, האפליקציה של מקלט האינטרנט יכולה להטמיע ממשק משתמש משלה. מקלט האינטרנט מספק את המחלקה cast.framework.ui.PlayerDataBinder
כדי לעזור לקשור אובייקט בממשק המשתמש למצב ההפעלה של מקלט האינטרנט.