iOS Sender アプリを Cast SDK v2 から Cast Application Framework(CAF)に移行する

次の手順で、iOS センダーアプリを Cast SDK から変換できます v2 を CAF 送信者にマッピングします。 GCKCastContext あります。

はじめに

  • CAF 送信者は引き続き Google Cast デベロッパー向けウェブサイト CocoaPods(v2 など)。
  • これらのポリシーの遵守について責任を負う新しいクラスが追加されました。 Google Cast の設計チェックリストをご覧ください。
  • CAF Sender は Cast UX 要件を満たすウィジェットを提供します。v2 UI コンポーネントは提供されておらず、 入手できます
  • CAF Sender の設計は、Cast Android SDK の設計と一致しています。
  • CAF 送信者はビットコード(v2 など)をサポートしています。
  • CAF の字幕は v2 と同様です。

依存関係

CAF 送信者は iOS バージョン 8 以降をサポートしています。

初期化

CAF では、キャスト フレームワークに明示的な初期化ステップが必要です。この 初期化が含まれます。 GCKCastContext 使用して適切なレイヤを GCKCastOptions Web Receiver アプリケーション ID とその他のグローバル 。これは通常、AppDelegate で行います。 -[application:didFinishLaunchingWithOptions:] メソッド:

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

この手順は v2 では必要ありませんでした。

デバイス検出

CAF では、検出プロセスの開始と停止は、 アプリがフォアグラウンドに移って、バックグラウンドに移動したときに、 できます。v2 の 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 では、デバイス コントロールの大部分がフレームワークによって処理されます。送信者 アプリケーション側でデバイスへの接続や起動を処理する必要は ウェブ レシーバー アプリケーション。v2 クラス GCKDeviceManager 非推奨となり、 使用されません。送信者とウェブ受信者とのやり取りが "session"。CAF GCKSessionManager クラスがセッションのライフサイクルを処理し、 ユーザーの操作に応じて、セッションを自動的に開始および停止します。 ユーザーがキャスト ダイアログでキャスト デバイスを選択すると開始され、終了する ユーザーが [キャストを停止] をタップしたとき] ボタンを使用する場合や、 送信側アプリ自体が終了します送信側アプリケーションに、セッションが成功したことを ライフサイクル イベントを登録して、 GCKSessionManagerListener 新しい GCKSessionManager。 「 GCKSessionManagerListener プロトコルは、すべてのセッション ライフサイクル イベントのコールバック メソッドを定義します。

GCKCastSession クラスはキャスト デバイスとのセッションを表します。クラス デバイスの音量とミュート状態を制御するメソッドが用意されています。 これは、v2 のメソッドを使用して GCKDeviceManager

v2 では、 GCKDeviceManagerDelegate プロトコルによって提供される変更の通知 デバイスの状態(音量、ミュート状態、スタンバイ ステータスなど)に応じて変更できます。 CAF では、音量/ミュート状態の変化の通知はコールバックを介して配信されます。 メソッドを GCKSessionManagerListener プロトコル。これらのリスナーは GCKSessionManager。 その他のデバイスの状態の通知はすべて、 を介して配信されます。 GCKCastDeviceStatusListener プロトコル。これらのリスナーは GCKCastSession

再接続ロジック

v2 と同様に、CAF は、ネットワークと通信するための 一時的な Wi-Fi 信号の損失やその他のネットワーク エラーが原因で失われた。現在は セッションレベルで行われますセッションは「一時停止」ステータス、Pod が 切断され、「接続済み」状態に戻ります。状態を 接続が回復しますフレームワークはネットワークへの再接続を ウェブ レシーバー アプリを使用してキャスト チャンネルを再接続します。

また、CAF ではセッションの自動再開も追加されています。送信者が アプリがバックグラウンドに移動して終了したり(スワイプや ためなど)では、キャスト セッションの進行中にフレームワークが 送信側アプリケーションがセッションを再開したときに、そのセッションの再開を試行します。 起動されるか、再起動されます。アラートの取り込み時に GCKSessionManager これにより、登録済みのすべての GCKSessionManagerListener 説明します。

カスタム チャンネル登録

v2 では、カスタム チャネル( GCKCastChannel サブクラスまたは GCKGenericChannel 委任など)は、 GCKDeviceManager。 CAF では、代わりにカスタム チャネルは GCKCastSession 作成します。登録は GCKSessionManagerListener -[sessionManager:didStartCastSession:] コールバック メソッドを指定します。メディア アプリケーションの場合、インフラストラクチャを 登録し、 GCKMediaControlChannel、 詳しくは次のセクションをご覧ください。

メディア コントロール

v2 クラス GCKMediaControlChannel サポートが終了しているため、使用しないでください。CAF では、 GCKRemoteMediaClient 同等の機能を便利な API で提供します。 このオブジェクトを明示的に初期化または登録する必要はありません。 フレームワークが自動的にオブジェクトをインスタンス化し、基盤となる Web Receiver アプリケーションが接続されている場合、セッション開始時刻のメディア チャネル Media Namespace をサポートしています。

GCKRemoteMediaClient gcloud SDK の -[remoteMediaClient] プロパティの GCKCastSession 渡されます。

v2 で発行されたすべてのメディア リクエストは、 GCKMediaControlChannel リクエスト ID は数値で、メソッドは GCKMediaControlChannelDelegate は、リクエストの完了に関する通知を送信するときにこの ID を提供します。 失敗します。

CAF で発行されたすべてのメディア リクエストは、 GCKRemoteMediaClientGCKRequest object;このオブジェクトには GCKRequestDelegate プロトコル リクエストの進行状況と最終的な結果を追跡するために使用できます。

バージョン 2 GCKMediaControlChannel、 は、ウェブ レシーバーでメディア プレーヤーの状態の変化に関する通知を送信します。 経由: GCKMediaControlChannelDelegate。 CAF では、 GCKRemoteMediaClient コールバックは、 GCKRemoteMediaClientListener 構成されます。任意の数のリスナーを GCKRemoteMediaClient: 複数の送信者コンポーネントが セッションに関連付けられている GCKRemoteMediaClient の単一インスタンス。

v2 では、ユーザーを維持する負担を送信者アプリケーションが担う必要がありました インターフェースは、Web Receiver のメディア プレーヤーの状態と同期します。CAF では、クラスは GCKUIMediaController 主にこの責任を担います詳しくは、 Codelab チュートリアル ドキュメントをご覧ください。

案内用のオーバーレイ

V2 では、 導入用のオーバーレイ UI

CAF がクラスを追加する GCKCastContext メソッドを使用 -[presentCastInstructionsViewControllerOnce] 送信側アプリが最初に表示されたときにキャスト アイコンをハイライト表示するために使用できるコードです。 提供します。

ミニ コントローラ

v2 では、ミニ コントローラをゼロから実装する必要があります。 。

CAF では、フレームワークにコントロール バー、 GCKUIMiniMediaControlsViewController それを永続化したいシーンに追加できます。 できます。ミニ コントローラを送信アプリに追加する方法は 2 つあります。

拡張コントローラ

v2 では、拡張コントローラをゼロから実装する必要があります。 。

CAF による追加 GCKUIMediaController 拡張コントローラを簡単に実装できます

CAF に事前構築済みの拡張コントローラ ウィジェットを追加 GCKUIExpandedMediaControlsViewController これをアプリに追加できます。カスタム拡張広告を実装する必要がなくなり GCKUIMediaController を使ってコントローラを操作します。

デバッグログ

GCKLogger および GCKLoggerDelegate v2 のクラスは CAF に引き継がれていますが、いくつかの変更と機能強化が行われています。

GCKLoggerDelegate -[logFromFunction:message:] メソッドの内容 非推奨になりました。 -[logMessage:fromFunction:]

フレームワーク ログ メッセージをフィルタするために、 GCKLoggerFilter [インスタンスを作成] で [インスタンスの管理] を 次の -[filter] プロパティ: GCKLogger シングルトン。

サンプルアプリ

詳しくは、 Codelabs と CAF 用に作成されたサンプルアプリ