將 iOS 傳送端應用程式從 Cast SDK 第 2 版遷移至 Cast 應用程式架構 (CAF)

請按照下列程序從 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 版中的 GCKDeviceScannerGCKFilterCriteria 類別為 已淘汰,請勿使用。

投放按鈕和投放對話方塊

在 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敬上 使用 GCKSessionManagerGCKSessionManagerListener敬上 通訊協定定義了所有工作階段生命週期事件的回呼方法。

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、 您可以新增要顯示永久性影片的場景 控制項你可以透過下列兩種方式在傳送端應用程式中新增迷你控制器:

展開的控制器

在 v2 中,您需要從頭開始實作展開控制器 傳送者應用程式。

CAF 新增 GCKUIMediaController、 可讓您更輕鬆地實作展開的控制器。

CAF 新增了預建的展開控制器小工具 GCKUIExpandedMediaControlsViewController敬上 就能輕鬆加入應用程式不必再導入自訂展開功能 運用 GCKUIMediaController 控制控制器

偵錯記錄功能

GCKLogger敬上 和 GCKLoggerDelegate。 第 2 版的類別會轉移至 CAF,但經過一些變更和強化。

GCKLoggerDelegate敬上 -[logFromFunction:message:] 方法有 並改用 -[logMessage:fromFunction:]

您現在可以透過建構適當的 GCKLoggerFilter敬上 並透過 Cloud Shell 的指令列 -[filter] 屬性 GCKLogger 單例模式。

範例應用程式

建議您參閱 程式碼研究室 專為 CAF 編寫的範例應用程式