IMA Android SDK は、完全に自動化された広告プレイリストをサポートしています。この機能では、広告を入稿する際に、Google アド マネージャーで指定したとおりに広告ブレークがコンテンツに挿入されます。また、プレロール、ミッドロール、ポストロールなどの広告ブレークをサポートするために必要な動画プレーヤーのコードも大幅に簡素化されます。
- アド マネージャーで広告をトラフィックする際に、「コンテンツの冒頭で常に広告ブレークを再生する」や「コンテンツの 30 分ごとに 1 分間の広告ブレークを再生する」など、さまざまな広告ルールを指定できます。
- 広告がリクエストされると、広告サーバーは広告の再生リストを返すことができます。SDK はプレイリストを処理し、指定された広告ブレークを自動的にスケジュールします。
- Android では広告とコンテンツの再生に同じ動画プレーヤーを使用するため、広告ルールを実装する場合は、広告の開始時にコンテンツの再生ヘッドの位置を保存し、広告の終了時にその位置にシークする必要があります。動画プレーヤーに
VideoAdPlayer
インターフェースを実装してください。これにより、アド マネージャーで指定した時間にミッドロール挿入点が自動的に挿入されます。private boolean playingContent = true; private int contentPosition = -1; private List
callbacks = new ArrayList (); @Override public void addCallback(VideoAdPlayerCallback callback) { callbacks.add(callback); } @Override public void removeCallback(VideoAdPlayerCallback callback) { callbacks.remove(callback); } public void loadContent() { playingContent = true; load(CONTENT_URL); } @Override public void loadAd(String mediaUrl) { playingContent = false; load(mediaUrl); } public void pauseContent() { savePosition(); pause(); } @Override public void pauseAd() { pause(); } private void pause() { myVideoView.pause(); for (VideoAdPlayerCallback callback : callbacks) { callback.onPause(); } } public void resumeContent() { loadContent(); if (contentPosition > 0) { restorePosition(); } resume(); } @Override public void resumeAd() { resume(); } private void resume() { myVideoView.start(); for (VideoAdPlayerCallback callback : callbacks) { callback.onResume(); } } public void savePosition() { contentPosition = myVideoView.getCurrentPosition(); } public void restorePosition() { myVideoView.seekTo(contentPosition); } CONTENT_PAUSE_REQUESTED
イベントとCONTENT_RESUME_REQUESTED
イベントは、広告ブレークの再生時にコンテンツを一時停止および再開するために使用されます。これらのイベントの詳細については、関連する API ドキュメントをご覧ください。
注: コンテンツの再生が終了したときや、ユーザーが再生を停止したときは、AdsLoader.contentComplete を呼び出して、コンテンツが終了したことを SDK に通知してください。その後、ポストロール広告ブレークがスケジュールされている場合は、SDK によって再生されます。ALL_ADS_COMPLETED
イベントは、すべての広告ブレークが再生されたときに発生します。また、コンテンツのトラッキングは init()
が呼び出されたときに開始されるため、コンテンツを再生する前に必ず init()
を呼び出す必要があります。