請按照下列程序從 Cast SDK 轉換 iOS 傳送端應用程式 從 v2 到 CAF 寄件者 是以 GCKCastContext 單例模式
簡介
- CAF 寄件者仍會透過 Google Cast 開發人員網站和 CocoaPods,例如第 2 版。
- 為遵守相關規定,我們加入了新的課程 參閱 Google Cast 設計檢查清單
- CAF 寄件者提供的小工具符合 Cast 使用者體驗規定。v2 未提供任何 UI 元件 這些小工具
- CAF 寄件者設計與 Cast Android SDK 設計一致。
- CAF 寄件者支援 Bitcode,例如 v2。
- CAF 的隱藏式輔助字幕與第 2 版相似,
依附元件
CAF 寄件者支援 iOS 8 以上版本。
初始化
在 CAF 中,Cast 架構需要明確的初始化步驟。這個
也就是初始化
GCKCastContext
敬上
單例模式,使用適當的
GCKCastOptions
。
來指定網路接收端應用程式 ID 和任何其他全域
只要設定成「自動重新啟動」
和「在主機維護期間」選項即可這通常在 AppDelegate
中進行
-[application:didFinishLaunchingWithOptions:]
方法:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
第 2 版不需要執行這個步驟。
探索裝置
在 CAF 中,探索程序會自動啟動及停止
當應用程式進入前景並進入背景時
。第 2 版中的 GCKDeviceScanner
和 GCKFilterCriteria
類別為
已淘汰,請勿使用。
投放按鈕和投放對話方塊
在 CAF 中,「投放」按鈕和對話方塊是由架構提供。演員 按鈕可例項化並新增至導覽列,如下所示:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
你也可以在腳本中新增「投放」按鈕。
有人輕觸按鈕時,「投放」對話方塊就會自動出現。
裝置控制
在 CAF 中,裝置控制項大部分是由架構處理。寄件者
應用程式不需要處理裝置的連線和啟動
Web Receiver 應用程式v2 類別
GCKDeviceManager
敬上
並應該將
不被使用傳送者與網路接收端之間的互動現在以
「session」CAF
GCKSessionManager
敬上
會處理工作階段生命週期
自動啟動及停止工作階段,以回應使用者手勢:工作階段
當使用者在「投放」對話方塊中選取投放裝置時,便會開始啟動並結束
當使用者輕觸 [停止投放] 時按鈕顯示在「投放」對話方塊中
傳送者應用程式本身終止。傳送方應用程式可收到工作階段通知
註冊和擷取生命週期事件
GCKSessionManagerListener
敬上
使用
GCKSessionManager
。
GCKSessionManagerListener
敬上
通訊協定定義了所有工作階段生命週期事件的回呼方法。
GCKCastSession
敬上
類別代表與投放裝置的工作階段。課程
具備控制裝置音量和靜音狀態的方法
先前介紹過 Google Cloud 中的
GCKDeviceManager
。
在第 2 版中,
GCKDeviceManagerDelegate
敬上
通訊協定提供的變更通知
,包括音量、靜音狀態、待機狀態等。
在 CAF 中,音量/靜音狀態變更通知是透過回呼傳送
方法
GCKSessionManagerListener
敬上
通訊協定;這些接聽程式註冊的
GCKSessionManager
。
所有其餘的裝置狀態通知都如下:
透過
GCKCastDeviceStatusListener
敬上
通訊協定;這些接聽程式註冊的
GCKCastSession
。
重新連線邏輯
和第 2 版一樣,CAF 會嘗試重新建立網路連線, 或 Wi-Fi 訊號遺失。現在 在工作階段層級完成;工作階段可能會在使用者進入「暫停」狀態時狀態 連線中斷,且將切換回「已連線」狀態 連線恢復。架構會負責 在這個過程中,Web Receiver 應用程式並重新連結任何 Cast 頻道。
此外,CAF 也會新增自動工作階段恢復功能。如果寄件者
應用程式傳送至背景或已終止 (透過滑動或關閉的方式)
造成錯誤) 的情況
就會嘗試繼續執行該工作階段,當傳送者應用程式返回
在前景執行或重新啟動;會自動處理這個值
GCKSessionManager
、
這樣就能在任何已註冊的已註冊裝置上,發出適當的回呼
GCKSessionManagerListener
。
執行個體。
自訂管道註冊
在 v2 中,自訂管道 (使用
GCKCastChannel
敬上
子類別或
GCKGenericChannel
。
委派代表) 是透過
GCKDeviceManager
。
在 CAF 中,自訂管道而是以
GCKCastSession
敬上
執行個體。您可以在
GCKSessionManagerListener
敬上
-[sessionManager:didStartCastSession:]
回呼方法。媒體應用程式不再需要明確地
註冊
GCKMediaControlChannel
;
詳情請參閱下節說明。
媒體管理
v2 類別
GCKMediaControlChannel
敬上
已淘汰,因此不應使用。在 CAF 中,這由新的
GCKRemoteMediaClient
敬上
類別,在更方便的 API 中提供對等的功能。
不需要明確初始化或註冊這個物件;這個
架構會自動為物件執行個體化,並註冊基礎模型
工作階段啟動時的媒體管道 (如果連接 Web Receiver 應用程式)
可支援媒體命名空間
GCKRemoteMediaClient
敬上
都能透過
-[remoteMediaClient]
的
GCKCastSession
物件。
在第 2 版中,所有向
GCKMediaControlChannel
敬上
會傳回數字請求 ID,而
GCKMediaControlChannelDelegate
。
會在傳送要求完成通知時提供這個 ID,或
失敗。
在 CAF 中,由
GCKRemoteMediaClient
敬上
將傳回
GCKRequest
。
object;這個物件有相關聯的
GCKRequestDelegate
通訊協定
狀態可用來追蹤要求進度和最終結果
第 2 版
GCKMediaControlChannel
;
會在網路接收端傳送媒體播放器狀態變更的通知
透過
GCKMediaControlChannelDelegate
。
在 CAF 中,
GCKRemoteMediaClient
敬上
這類回呼會提供對等的回呼
GCKRemoteMediaClientListener
。
因此效能相當卓越任意數量的接聽程式都能註冊
GCKRemoteMediaClient
,可讓多個傳送者元件共用
與工作階段相關聯的 GCKRemoteMediaClient
單一例項。
在 v2 中,傳送方應用程式必須承擔維持使用者的負擔
介面與網路接收端上的媒體播放器狀態同步。在 CAF 中
GCKUIMediaController
敬上
負責承擔大部分的責任請參閱
程式碼研究室教學課程
。
簡介重疊
第 2 版並未提供 簡介重疊 UI。
CAF 新增類別
GCKCastContext
敬上
使用方法
-[presentCastInstructionsViewControllerOnce]
傳送者應用程式可在首次出現「投放」按鈕時醒目顯示
讓使用者享有低延遲和高可用性
迷你控制器
在 v2 中,您需要在 。
在 CAF 中,此架構提供控制列
GCKUIMiniMediaControlsViewController
、
您可以新增要顯示永久性影片的場景
控制項你可以透過下列兩種方式在傳送端應用程式中新增迷你控制器:
透過包裝的方式,讓 Cast 架構管理迷你控制器的版面配置 現有檢視控制器
GCKUICastContainerViewController
敬上 並新增GCKUIMiniMediaControlsViewController
。 位於檢視畫面的底部使用以下程式碼,直接將迷你控制器新增至現有檢視畫面控制器:
-[createMiniMediaControlsViewController]
來建立GCKUIMiniMediaControlsViewController
然後將該執行個體新增為容器檢視控制器的子檢視畫面。
展開的控制器
在 v2 中,您需要從頭開始實作展開控制器 傳送者應用程式。
CAF 新增
GCKUIMediaController
、
可讓您更輕鬆地實作展開的控制器。
CAF 新增了預建的展開控制器小工具
GCKUIExpandedMediaControlsViewController
敬上
就能輕鬆加入應用程式不必再導入自訂展開功能
運用 GCKUIMediaController
控制控制器
偵錯記錄功能
GCKLogger
敬上
和
GCKLoggerDelegate
。
第 2 版的類別會轉移至 CAF,但經過一些變更和強化。
GCKLoggerDelegate
敬上
-[logFromFunction:message:]
方法有
並改用
-[logMessage:fromFunction:]
。
您現在可以透過建構適當的
GCKLoggerFilter
敬上
並透過 Cloud Shell 的指令列
-[filter]
屬性
GCKLogger
單例模式。