העברת אפליקציית השולח ב-iOS מ-Cast SDK v2 ל-Cast Application Framework (CAF)

התהליך הבא מאפשר לך להמיר את אפליקציית השולח שלך ב-iOS מ-Cast SDK גרסה 2 של השולח CAF, שמבוססת על GCKCastContext סינגלטון.

מבוא

  • CAF Sender עדיין מופץ האתר למפתחים של Google Cast וגם CocoaPods, כמו v2.
  • נוספו כיתות חדשות שלוקחות אחריות לעמוד בדרישות את רשימת המשימות לעיצוב של Google Cast.
  • CAF Sender מספק ווידג'טים שעומדים בדרישות של Cast UX. v2 לא סיפקו רכיבים של ממשק המשתמש, שדרשו מכם להטמיע את הווידג'טים האלה.
  • עיצוב שולח CAF תואם לעיצוב Android SDK של Cast.
  • התכונה CAF Sender תומכת ב-Bitcode, למשל גרסה 2.
  • הכתוביות ב-CAF דומות ל-v2.

יחסי תלות

אפליקציית CAF Sender תומכת ב-iOS בגרסה 8 ואילך.

אתחול

ב-CAF, נדרש שלב אתחול מפורש עבור ה-Cast framework. הזה כוללת אתחול GCKCastContext סינגלטון, באמצעות GCKCastOptions כדי לציין את מזהה האפליקציה של מכשיר האינטרנט של Google Voice וכל הגדרה גלובלית אחרת אפשרויות. זה נעשה בדרך כלל בAppDelegate -[application:didFinishLaunchingWithOptions:] method:

GCKCastOptions *options = [[GCKCastOptions alloc]
    initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];

לא היה צורך לבצע את השלב הזה בגרסה 2.

גילוי מכשירים

ב-CAF, תהליך הגילוי מתחיל ומופסק באופן אוטומטי על ידי framework, כשהאפליקציה מגיעה לחזית ועוברת לרקע, בהתאמה. הכיתות GCKDeviceScanner ו-GCKFilterCriteria מגרסה 2 הן הוצא משימוש ואין להשתמש בו.

הלחצן להפעלת Cast ותיבת הדו-שיח של הפעלת Cast

ב-CAF, הלחצן להפעלת Cast ותיבת הדו-שיח מסופקים על ידי ה-framework. צוות השחקנים ניתן ליצור ממנו את הלחצן ולהוסיף אותו לסרגל הניווט באופן הבא:

GCKUICastButton *castButton =
    [[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
    [[UIBarButtonItem alloc] initWithCustomView:castButton];

ניתן גם להוסיף את הלחצן להפעלת Cast לסטוריבורד.

כשמישהו מקיש על הלחצן, תיבת הדו-שיח של הפעלת Cast מוצגת באופן אוטומטי.

שליטה במכשירים

ב-CAF, ה-framework מטפל ברוב המקרים. השולח האפליקציה לא צריכה לטפל בהתחברות למכשיר ולהפעיל את האפליקציה Web Acceptr. סיווג v2 GCKDeviceManager הוצא משימוש, . האינטראקציה בין השולח למקבל האינטרנט מיוצגת עכשיו "session". קרן CAF GCKSessionManager הכיתה תטפל במחזור החיים של הסשן מתחיל ומפסיק סשנים באופן אוטומטי בתגובה לתנועות משתמש: סשן מופעלת כשהמשתמש בוחר מכשיר Cast בתיבת הדו-שיח של הפעלת Cast ומסתיימת כשהמשתמש מקיש על הלחצן 'הפסקת ההעברה' בתיבת הדו-שיח 'העברה' או כאשר אפליקציית השולח עצמה תסתיים. האפליקציה של השולח יכולה לקבל התראות על סשן של מחזור החיים באמצעות רישום GCKSessionManagerListener עם GCKSessionManager GCKSessionManagerListener הפרוטוקול מגדיר שיטות קריאה חוזרת לכל האירועים במחזור החיים של הסשן.

GCKCastSession מייצג סשן עם מכשיר Cast. הכיתה יש שיטות לשליטה בעוצמת הקול ובמצבי ההשתקה של המכשיר, נעשה בעבר ב-v2 באמצעות methods GCKDeviceManager

בגרסה 2, GCKDeviceManagerDelegate התראות פרוטוקול לגבי שינויים למצב המכשיר, כולל עוצמת קול, מצב השתקה, סטטוס המתנה וכן הלאה. ב-CAF, התראות על שינוי מצב עוצמת הקול או השתקה נשלחות באמצעות קריאה חוזרת (callback) ב-methods GCKSessionManagerListener פרוטוקול; המאזינים האלה רשומים GCKSessionManager כל ההתראות על מצב המכשיר שנותרו נמסרה באמצעות GCKCastDeviceStatusListener פרוטוקול; המאזינים האלה רשומים GCKCastSession

לוגיקת החיבור מחדש

בדומה ל-v2, CAF מנסה ליצור מחדש חיבורי רשת אבדו בגלל אובדן זמני של אות Wi-Fi או שגיאות רשת אחרות. זה עכשיו מתבצעת ברמת הסשן, סשן יכול להיכנס ל"השעיה" כשהערך החיבור ינותק, ויועבר חזרה אל מתי? הקישוריות משוחזרת. ה-framework מטפל בחיבור מחדש אל האפליקציה של מכשיר העזר באינטרנט וחיבור מחדש של כל ערוצי ההעברה (cast) במסגרת התהליך הזה.

בנוסף, CAF מוסיפה גם המשך אוטומטי לסשן. אם השולח האפליקציה נשלחת לרקע או נסגרת (על ידי החלקה הצידה, או עקב קריסה) בזמן שמתבצעת הפעלת Cast, ה-framework ינסה להמשיך את הסשן כשאפליקציית השולח חוזרת חזית או מופעלת מחדש. מטופל באופן אוטומטי על ידי GCKSessionManager שיפעיל את הקריאה החוזרת המתאימה בכל GCKSessionManagerListener במקרים שונים.

רישום ערוץ מותאם אישית

בגרסה 2, ערוצים מותאמים אישית (הוטמעו באמצעות GCKCastChannel מחלקה משנית GCKGenericChannel ו מיופה כוח) היו רשומים GCKDeviceManager. ב-CAF, ערוצים מותאמים אישית רשומים במקום זאת עם GCKCastSession מכונה. אפשר להירשם GCKSessionManagerListener -[sessionManager:didStartCastSession:] שיטת קריאה חוזרת. ביישומי מדיה, אין יותר צורך לרשום את GCKMediaControlChannel כדי לקבל מידע נוסף, אפשר לעיין בקטע הבא.

פקד מדיה

סיווג v2 GCKMediaControlChannel הוצא משימוש ולא צריך להשתמש בו. ב-CAF, הוא מוחלף על ידי GCKRemoteMediaClient מספק פונקציונליות מקבילה ב-API נוח יותר. אין צורך לאתחל או לרשום את האובייקט הזה באופן מפורש. ה תפיק באופן אוטומטי את האובייקט ותרשום את ערוץ מדיה בשעת ההתחלה של הסשן, אם האפליקציה של מקלט האינטרנט מחוברת שיתמוך במרחב השמות של המדיה.

GCKRemoteMediaClient אפשר לגשת אליו באמצעות -[remoteMediaClient] של התכונה GCKCastSession לאובייקט.

בגרסה 2, כל בקשות המדיה שהונפקו GCKMediaControlChannel יחזיר מזהה בקשה מספרי, ו-methods GCKMediaControlChannelDelegate יספק את המזהה הזה בזמן שליחת התראות לגבי השלמת הבקשה, או כשלכם.

ב-CAF, כל בקשות המדיה שהונפקו GCKRemoteMediaClient יחזיר GCKRequest אובייקט; לאובייקט הזה יש GCKRequestDelegate פרוטוקול שבו ניתן להשתמש כדי לעקוב אחר ההתקדמות והתוצאה הסופית של הבקשה.

גרסה 2 GCKMediaControlChannel תישלח התראות על שינויים במצב של נגן המדיה במקלט האינטרנט דרך GCKMediaControlChannelDelegate ב-CAF, GCKRemoteMediaClient מספקת קריאה חוזרת (callback) מקבילה באמצעות GCKRemoteMediaClientListener של Google. ניתן לרשום כל מספר של מאזינים GCKRemoteMediaClient, שמאפשר למספר רכיבים של שולחים לשתף מופע יחיד של GCKRemoteMediaClient שמשויך לסשן.

בגרסה 2, אפליקציית השולח הייתה צריכה לשאת את הנטל לשמור על המשתמש שהוא מסונכרן עם המצב של נגן המדיה במקלט האינטרנט. ב-CAF, המחלקה GCKUIMediaController לוקח על רוב האחריות הזו, לראות את מדריך Codelab לדוגמאות לשימוש ברכיב הזה.

שכבת-על של סרטון היכרות

V2 לא מספק ממשק משתמש בשכבת-על של מבוא.

CAF מוסיף כיתה GCKCastContext בשיטה מסוימת -[presentCastInstructionsViewControllerOnce] שאפליקציית שולח יכולה להשתמש בה כדי להדגיש את לחצן הפעלת Cast כשהוא מוצג בפעם הראשונה. למשתמשים.

מיני-בקר

בגרסה 2, צריך להטמיע מיני-בקר מאפס אפליקציית השולח.

ב-CAF, ה-framework מספק סרגל בקרה GCKUIMiniMediaControlsViewController שאפשר להוסיף לסצנות שבהן רוצים להציג את הפקדים בנגן. יש שתי דרכים להוסיף את המיני-בקר לאפליקציית שולח:

בקר מורחב

בגרסה 2, צריך להטמיע בקר מורחב מההתחלה האפליקציה של השולח.

הוספות CAF GCKUIMediaController שבאמצעותו אפשר להטמיע בקר מורחב בקלות רבה יותר.

עם CAF נוסיף ווידג'ט מורחב מובנה מראש GCKUIExpandedMediaControlsViewController שאפשר פשוט להוסיף לאפליקציה. אין יותר צורך להטמיע תוסף מותאם אישית מורחב בשלט רחוק באמצעות GCKUIMediaController.

רישום ביומן של ניפוי באגים

GCKLogger וגם GCKLoggerDelegate הכיתות מגרסה 2 מועברות אל CAF, עם שינויים ושיפורים מסוימים.

GCKLoggerDelegate ל-method -[logFromFunction:message:] יש הוצאה משימוש לטובת -[logMessage:fromFunction:]

עכשיו אפשר לסנן הודעות יומן של Framework על ידי יצירת שפה מתאימה GCKLoggerFilter ומקצה אותו באמצעות הגדרה של המאפיין -[filter] של סינגלטון GCKLogger.

אפליקציות לדוגמה

מומלץ לעיין codelabs וגם אפליקציות לדוגמה שנכתבו עבור CAF.