HLS インタースティシャル仕様では、動画ストリームまたは音声ストリームに広告を柔軟にスケジュールして挿入する方法が導入されています。クライアントサイドのアプローチでは、AVPlayerInterstitialEvent クラスを作成することで、広告ブレークのリクエストと再生のタイミングをアプリケーションで完全に制御できます。このアプローチでは、コンテンツ ストリーム マニフェストに EXT-X-DATERANGE タグは必要ありません。クライアントサイド HLS インタースティシャルを使用すると、ストリーム マニフェストやメディア ファイルを変更することなく、あらゆるコンテンツに広告を動的に挿入できます。
このガイドでは、インタラクティブ メディア広告(IMA)SDK を、サーバーガイド広告挿入(SGAI)ライブ ストリーム セッションを作成し、クライアントサイドでインタースティシャルをスケジュールする動画プレーヤー アプリに統合する方法について説明します。詳しくは、サーバーガイド付き DAI をご覧ください。
前提条件
始める前に、次のものが必要になります。
ユーザー インターフェースに
Storyboardを使用する新しい Xcode プロジェクト。詳細については、アプリの Xcode プロジェクトを作成するをご覧ください。Google IMA SDK。詳しくは、DAI 用 IMA SDK を設定するをご覧ください。
ダイナミック広告挿入ライブ ストリーム リクエストの次のパラメータ:
NETWORK_CODE: Google アド マネージャーのネットワーク コード。CUSTOM_ASSET_KEY: DAI ライブ配信イベントを識別するカスタム文字列。ライブ ストリーム イベントの DAI タイプが連続広告配信マニフェストである必要があります。
ストーリーボードを構成する
iPhone.storyboard ファイルで、次の操作を行います。
- 動画プレーヤーと広告 UI のコンテナとして
UIViewオブジェクトを作成します。 ViewControllerクラスのadUIViewプロパティを作成して、UIViewオブジェクトと接続します。adUIViewオブジェクトに、再生ボタンとして機能するUIButtonを作成します。ViewControllerクラスのplayButtonプロパティを作成して、UIButtonオブジェクトと接続し、onPlayButtonTouch関数を作成してユーザーのタップを処理します。
広告ローダを初期化する
メインビュー コントローラの viewDidLoad イベントで、次の操作を行います。
AVPlayerクラスとAVPlayerLayerクラスを使用して動画プレーヤーを設定します。IMAAdDisplayContainerオブジェクトとIMAAVPlayerVideoDisplayオブジェクトを作成します。広告表示コンテナは、IMA DAI SDK が広告 UI サブビューを挿入するためのadUIViewを指定します。動画表示オブジェクトは、IMA DAI SDK の広告ロジックと AVFoundation 再生システム間のブリッジとして機能し、動画広告の再生をトラッキングします。- 広告の再生と広告 UI のローカライズ設定を使用して
IMAAdsLoaderオブジェクトを初期化します。
次の例では、空の IMASettings オブジェクトを使用して広告ローダーを初期化しています。
ストリーム リクエストを行う
コンテンツ ストリームの広告をリクエストするには、IMAPodStreamRequest オブジェクトを作成して、IMAAdsLoader インスタンスに渡します。必要に応じて、adTagParameters プロパティを設定して、ストリームの DAI オプションとターゲティング パラメータを指定します。
この例では、viewDidAppear イベントで loadAdStream メソッドを呼び出します。
本番環境アプリでは、ユーザーがコンテンツ ストリームを選択した後に loadAdStream メソッドを呼び出します。
ストリーム読み込みイベントを処理する
IMAAdsLoaderDelegate プロトコルを実装して、ストリーム リクエストの成功または失敗を処理します。
- 成功すると、
IMAStreamManagerを含むIMAAdsLoadedDataオブジェクトが返されます。現在の DAI セッションのstreamManager.streamId値を保存します。 - 失敗した場合は、エラーをログに記録します。
次の例では、ストリーム読み込み済みイベントを処理し、ストリームの読み込み失敗イベントをログに記録します。
広告挿入のスケジュールを設定する
広告ブレークをスケジュールするには、AVPlayerInterstitialEvent オブジェクトを作成します。イベント オブジェクトの templateItems プロパティを AVPlayerItem オブジェクトの配列に設定します。各アイテム オブジェクトには広告ポッド マニフェスト URL が含まれます。
連続配信広告のマニフェスト URL を作成するには、メソッド: HLS 連続配信広告のマニフェストのドキュメントをご覧ください。
デモ用に、次の例では、コンテンツ ライブストリームの現在時刻を使用して Pod 識別子文字列を生成します。generatePodIdentifier 関数は、Pod 識別子を ad_break_id/mid-roll-{minute} として返します。
本番環境アプリでは、ライブ配信のすべての視聴者向けに同期された、各広告ブレークの一意の値を提供するソースから Pod ID を取得します。
次の例では、ユーザーが再生ボタンをクリックしてから 2 分以内に広告ブレークが開始されるようにスケジュールを設定しています。
scheduleAdInsertion メソッドは、広告ブレークの開始時間を計算し、広告ポッドのマニフェスト URL を作成します。この URL を使用して AVPlayerInterstitialEvent オブジェクトを作成します。
必要に応じて、AVPlayerInterstitialEvent.Restrictions 構造体を使用して、広告再生中のユーザーのスキップや巻き戻しを制限します。
広告イベントを処理する
広告イベントを処理するには、IMAStreamManagerDelegate プロトコルを実装します。このアプローチでは、広告ブレークの開始と終了をトラッキングし、個々の広告に関する情報を取得できます。
アプリを実行します。成功すると、Pod サービング マニフェスト ストリームを使用してインタースティシャルをリクエストして再生できます。