התהליך הבא מאפשר לך להמיר את אפליקציית השולח שלך ב-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
שאפשר להוסיף לסצנות שבהן רוצים להציג את
הפקדים בנגן. יש שתי דרכים להוסיף את המיני-בקר לאפליקציית שולח:
אפשר למסגרת של Cast לנהל את הפריסה של המיני-בקר על ידי האריזה את נאמן המידע הקיים שלכם
GCKUICastContainerViewController
והוספתGCKUIMiniMediaControlsViewController
בתחתית התצוגה.מוסיפים את המיני-בקר ישירות לבקר התצוגה הקיים באמצעות
-[createMiniMediaControlsViewController]
כדי ליצורGCKUIMiniMediaControlsViewController
ולאחר מכן מוסיפים אותו לבקר התצוגה של הקונטיינר כתצוגת משנה.
בקר מורחב
בגרסה 2, צריך להטמיע בקר מורחב מההתחלה האפליקציה של השולח.
הוספות CAF
GCKUIMediaController
שבאמצעותו אפשר להטמיע בקר מורחב בקלות רבה יותר.
עם CAF נוסיף ווידג'ט מורחב מובנה מראש
GCKUIExpandedMediaControlsViewController
שאפשר פשוט להוסיף לאפליקציה. אין יותר צורך להטמיע תוסף מותאם אישית מורחב
בשלט רחוק באמצעות GCKUIMediaController
.
רישום ביומן של ניפוי באגים
GCKLogger
וגם
GCKLoggerDelegate
הכיתות מגרסה 2 מועברות אל CAF, עם שינויים ושיפורים מסוימים.
GCKLoggerDelegate
ל-method -[logFromFunction:message:]
יש
הוצאה משימוש לטובת
-[logMessage:fromFunction:]
עכשיו אפשר לסנן הודעות יומן של Framework על ידי יצירת שפה מתאימה
GCKLoggerFilter
ומקצה אותו באמצעות הגדרה של
המאפיין -[filter]
של
סינגלטון GCKLogger
.
אפליקציות לדוגמה
מומלץ לעיין codelabs וגם אפליקציות לדוגמה שנכתבו עבור CAF.