このガイドでは、IMA DAI SDK をシンプルな動画プレーヤー アプリに統合する方法について説明します。統合が完了したサンプルを確認する場合は、GitHub から BasicExample をダウンロードしてください。
IMA DAI の概要
IMA DAI の実装には、このガイドで説明されているように、主に 4 つの SDK コンポーネントが関与します。
StreamDisplayContainer: 動画再生要素の上に配置され、広告 UI 要素を格納するコンテナ オブジェクト。AdsLoader: ストリームをリクエストし、ストリーム リクエスト レスポンス オブジェクトによってトリガーされたイベントを処理するオブジェクト。インスタンス化する広告ローダは 1 つだけにしてください。この広告ローダは、アプリのライフサイクル全体で再利用できます。StreamRequest: ストリーム リクエストを定義するオブジェクト。ストリーム リクエストは、ビデオ オンデマンドまたはライブ ストリームのいずれかです。ライブ配信リクエストではアセットキーを指定し、VOD リクエストでは CMS ID と動画 ID を指定します。どちらのリクエスト タイプでも、指定したストリームにアクセスするために必要な API キーと、Google アド マネージャーの設定で指定された広告識別子を IMA SDK で処理するための Google アド マネージャー ネットワーク コードを、必要に応じて含めることができます。StreamManager: ダイナミック広告挿入ストリームと DAI バックエンドとのやり取りを処理するオブジェクト。ストリーム マネージャーは、トラッキング ping を処理し、ストリーム イベントと広告イベントをパブリッシャーに転送します。
前提条件
- Android Studio
- SDK 統合用のサンプル動画プレーヤー アプリ
サンプル動画プレーヤー アプリをダウンロードして実行する
このサンプルアプリには、HLS 動画を再生する動画プレーヤーが用意されています。これを、IMA DAI SDK の DAI 機能を統合するための出発点として使用します。
サンプル動画プレーヤー アプリをダウンロードして解凍します。
Android Studio を起動し、[Open an existing Android Studio project] を選択します。Android Studio がすでに実行されている場合は、[File] > [New] > [Import Project] を選択します。
SampleVideoPlayer/build.gradleを選択します。[Tools] > [Android] > [Sync Project with Gradle Files] を選択して、Gradle 同期を実行します。
[Run] > [Run 'app'] を使用して、プレーヤー アプリが Android デバイスまたは Android Virtual Device でコンパイルされ、実行されることを確認します。動画ストリームの読み込みに少し時間がかかるのは正常です。
サンプル動画プレーヤーを確認する
サンプル動画プレーヤーには、IMA DAI SDK 統合コードがまだ含まれていません。サンプルアプリは、主に次の 2 つの部分で構成されています。
samplevideoplayer/SampleVideoPlayer.java: IMA DAI 統合のベースとなる ExoPlayer ベースの HLS プレーヤー。videoplayerapp/MyActivity.java: このアクティビティは、動画プレーヤーを作成し、Contextとmedia3.ui.PlayerViewを渡します。
IMA DAI SDK をプレーヤー アプリに追加する
また、IMA DAI SDK への参照も含める必要があります。Android Studio で、app/build.gradle にあるアプリケーション レベルの build.gradle ファイルに以下を追加します。IMA SDK では、ライブラリの脱糖を有効にする必要があります。そのためには、coreLibraryDesugaringEnabled true を設定し、'com.android.tools:desugar_jdk_libs' を依存関係として build.gradle ファイルに追加します。詳細については、nio 仕様の脱糖で使用可能な Java 11+ API をご覧ください。
IMA DAI SDK を統合する
videoplayerappパッケージ(app/java/com.google.ads.interactivemedia.v3.samples/videoplayerapp/内)にSampleAdsWrapperという新しいクラスを作成して、既存のSampleVideoPlayerをラップし、IMA DAI を実装するロジックを追加します。これを行うには、まず DAI ストリームのリクエストに使用するAdsLoaderを作成する必要があります。このスニペットには、HLS と DASH、ライブ ストリームと VOD ストリームのサンプル パラメータが含まれています。再生するストリームを設定するには、
CONTENT_TYPE変数を更新します。VideoStreamPlayer.VideoStreamPlayerCallbackを拡張するSampleVideoPlayerCallbackインターフェース インスタンスの作成を処理するcreateSampleVideoPlayerCallback()ヘルパー メソッドを作成します。DAI を使用するには、プレーヤーが ID3 イベントを IMA DAI SDK に渡す必要があります。次のサンプルコードでは、
callback.onUserTextReceived()メソッドがこれを行います。SteamRequestを作成するために、buildStreamRequest()メソッドを追加します。このメソッドは、CONTENT_TYPE変数の設定方法に基づいて、異なるストリームを切り替えます。このガイドで使用するデフォルトのストリームは、IMA のサンプル VOD HLS ストリームです。また、ストリームを再生するには
VideoStreamPlayerが必要です。そのため、VideoStreamPlayerを実装する匿名クラスを作成するcreateVideoStreamPlayer()メソッドを追加します。必要なリスナーを実装し、エラー処理のサポートを追加します。
AdErrorListenerの実装に注意してください。広告の再生に失敗すると、代替 URL が呼び出されます。コンテンツと広告が 1 つのストリームに含まれているため、DAI ストリームでエラーが発生した場合にフォールバック ストリームを呼び出せるようにしておく必要があります。ロギング用のコードを追加します。
videoplayerappのMyActivityを変更して、SampleAdsWrapperをインスタンス化して呼び出します。また、ヘルパー メソッドを使用してImaSdkFactory.initialize()を呼び出し、ImaSdkSettingsインスタンスを作成します。ImaSdkSettingsインスタンスを作成するgetImaSdkSettings()ヘルパー メソッドを追加します。アクティビティのレイアウト ファイル
activity_my.xmlを変更して、ロギング用の UI 要素を追加します。
おめでとうございます。これで、Android アプリで動画広告をリクエストして表示できるようになりました。実装を微調整するには、ブックマーク、スナップバック、API ドキュメントをご覧ください。
トラブルシューティング
動画広告の再生で問題が発生した場合は、完成した BasicExample をダウンロードしてみてください。BasicExample で正常に動作する場合は、アプリの IMA 統合コードに問題がある可能性があります。
それでも問題が解決しない場合は、IMA SDK フォーラムをご覧ください。