IMA SDK を使用すると、マルチメディア広告をウェブサイトやアプリに簡単に統合できます。IMA SDK は、 VAST 準拠のあらゆる広告サーバーから広告をリクエストし、アプリでの広告再生を管理できます。IMA DAI SDK を使用すると、アプリは広告とコンテンツ動画(VOD またはライブ コンテンツ)のストリーム リクエストを行います。SDK は結合された動画ストリームを返すため、アプリ内で広告とコンテンツの動画の切り替えを管理する必要はありません。
関心のある DAI ソリューションを選択する
フルサービス DAI
このガイドでは、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 仮想デバイスで実行されることを確認します。動画ストリームの読み込みに数秒かかるのは正常です。
サンプル動画プレーヤーを調べる
サンプル動画プレーヤーには、まだ 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
を設定し、build.gradle ファイルで coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
を依存関係として追加する必要があります。詳細については、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
変数を更新します。createSampleVideoPlayerCallback()
ヘルパー メソッドを作成して、VideoStreamPlayer.VideoStreamPlayerCallback
を拡張するSampleVideoPlayerCallback
インターフェース インスタンスの作成を処理します。DAI を使用するには、プレーヤーが ID3 イベントを IMA DAI SDK に渡す必要があります。次のサンプルコードでは、
callback.onUserTextReceived()
メソッドがこれを行います。SteamRequest
を作成するbuildStreamRequest()
メソッドを追加します。このメソッドは、CONTENT_TYPE
変数の設定方法に基づいて、異なるストリームを切り替えます。このガイドで使用するデフォルトのストリームは、IMA のサンプル VOD HLS ストリームです。ストリームを再生するには
VideoStreamPlayer
も必要なので、VideoStreamPlayer
を実装する匿名クラスを作成するcreateVideoStreamPlayer()
メソッドを追加します。必要なリスナーを実装し、エラー処理のサポートを追加します。
AdErrorListener
の実装に注目してください。広告の再生に失敗した場合、フォールバック URL を呼び出します。コンテンツと広告が 1 つのストリームに含まれているため、DAI ストリームでエラーが発生した場合は、フォールバック ストリームを呼び出す準備をしておく必要があります。ロギング用のコードを追加します。
videoplayerapp
のMyActivity
を変更して、SampleAdsWrapper
をインスタンス化して呼び出します。また、ヘルパー メソッドを使用してImaSdkSettings
インスタンスを作成し、ここでImaSdkFactory.initialize()
を呼び出します。ImaSdkSettings
インスタンスを作成するgetImaSdkSettings()
ヘルパー メソッドを追加します。アクティビティのレイアウト ファイル
activity_my.xml
を変更して、ロギング用の UI 要素を追加します。
おめでとうございます。これで、Android アプリで動画広告のリクエストと表示ができるようになりました。実装を微調整するには、ブックマーク、スナップバック、API ドキュメントをご覧ください。
トラブルシューティング
動画広告の再生で問題が発生した場合は、完成した BasicExample をダウンロードしてみてください。BasicExample で正常に動作する場合は、アプリの IMA 統合コードに問題がある可能性があります。
それでも問題が解決しない場合は、IMA SDK フォーラムをご覧ください。