Android の動画リワード実装

Before you start

ironSource SDK がアプリケーションに正しく実装されていることを確認してください。実装の概要はこちら

ステップ 1. 動画リワードリスナーを実装する

ironSource SDK はいくつかのイベントを発火させて広告のアベイラビリティと視聴完了を通知するので、ユーザーに報酬を与えるタイミングを知ることができます。

SDK は、以下にリストされているすべての発生しうるイベントをリスナーに通知します:

IronSource.setLevelPlayRewardedVideoListener(new LevelPlayRewardedVideoListener() {
   // Indicates that there's an available ad. 
   // The adInfo object includes information about the ad that was loaded successfully
   // Use this callback instead of onRewardedVideoAvailabilityChanged(true)
   @Override
   public void onAdAvailable(AdInfo adInfo) {}

   // Indicates that no ads are available to be displayed 
   // Use this callback instead of onRewardedVideoAvailabilityChanged(false) 
   @Override
   public void onAdUnavailable() {}

   // The Rewarded Video ad view has opened. Your activity will loose focus
   @Override
   public void onAdOpened(AdInfo adInfo) {}

   // The Rewarded Video ad view is about to be closed. Your activity will regain its focus
   @Override
   public void onAdClosed(AdInfo adInfo) {}

   // The user completed to watch the video, and should be rewarded. 
   // The placement parameter will include the reward data.
   // When using server-to-server callbacks, you may ignore this event and wait for the ironSource server callback
   @Override
   public void onAdRewarded(Placement placement, AdInfo adInfo) {}

   // The rewarded video ad was failed to show
   @Override
   public void onAdShowFailed(IronSourceError error, AdInfo adInfo) {}

   // Invoked when the video ad was clicked. 
   // This callback is not supported by all networks, and we recommend using it 
   // only if it's supported by all networks you included in your build
   @Override
   public void onAdClicked(Placement placement, AdInfo adInfo) {}
});

リスナーの完全な実装については、こちらで確認できます。

SDK の初期化

リスナーは必ず SDK を初期化する前に設定してください。これにより、SDK がすべての関連情報を送信できるようになります。

コールバック

コールバックが常にメインスレッドで実行されていると想定しないでください。ironSource コールバックから生じる UI インタラクションまたは更新は、実行する前にメインスレッドに渡す必要があります。

エラーコード

ironSource は、実装中またはライブプロダクションで発生する可能性のあるエラーを理解するのに役立つエラーコードメカニズムを提供しています。こちらのガイドをご覧ください。

ネットワーク接続ステータス

ironSource Network Change Status 機能を使用して、ユーザーのデバイスのインターネット接続を判別およびモニタリングすることができます。これにより、SDK はネットワークの変更に応じて広告配信可能な状態を示すアベイラビリティを変更できます。つまり、ネットワーク接続がない場合、アベイラビリティは FALSE になります。
この関数のデフォルトは false です。接続の変更を監視する場合は、SDK の初期化において次の文字列を使用してアクティベートします:

IronSource.shouldTrackNetworkState(this, true);

ステップ 2. ユーザーに動画広告を表示する

広告のアベイラビリティ

RewardedVideoListener とその関数を正しく実装することにより、onAdAvailabile を通じてアベイラビリティステータスを受け取ることができます。

public void onAdAvailable(AdInfo adInfo)

または、次の関数を呼ぶ事で広告のアベイラビリティを直接取得してください:

boolean available = IronSource.isRewardedVideoAvailable();

メディエーションを介して、アドネットワークから利用可能な動画が取得出来たら、この動画広告をユーザーに表示する準備が整ったことを意味します。ユーザーにとってベストな広告体験を提供できる様、広告を表示する前にゲームアクション・オーディオを止める事を忘れないでください。

Note: ironSource SDK は、セッション全体を通じて広告のアベイラビリティを確保するために、動画リワードを自動的にキャッシュします。

広告プレースメント

LevelPlay Ad Placements ツールを使用すると、動画リワード体験をカスタマイズおよび最適化できます。このツールを使用すると、リワードに応じてさまざまなプレースメントからユーザーに動画を提示できます。以下の関数を使用して、広告を表示するプレースメントを指定できます。詳細については、広告プレースメントのドキュメントをご覧ください。

Note: パラメーターとして使用する場合は、プラットフォームに記述されているプレースメント名を使用してください。

動画広告を配信する

ironSource クラスの showRewardedVideo() メソッドを呼び出すことで、ユーザーに動画広告を表示し、広告を表示する特定のプレースメントを指定できます。このプレースメントのリワード設定は、ironSource サーバーから取得されます:

IronSource.showRewardedVideo(placementName);
Note:  placementName パラメーターが null の場合、SDK は LevelPlay プラットフォームで構成されたデフォルトのプレースメント設定を取得します。

各広告プレースメントに関連付けられている特定のリワードの詳細を取得するには、次の関数を呼びます:

Placement placement = IronSource.getRewardedVideoPlacementInfo("placementName");
// Null can be returned instead of a placement if the placementName is not valid.
if (placement != null) {
    String rewardName = placement.getRewardName();
    int rewardAmount = placement.getRewardAmount();
}

キャッピングとペーシング

LevelPlay の広告プレースメントに加えて、選択したプレースメントの広告表示回数上限であるキャップと、広告表示間隔であるペースが設定できるようになりました。キャッピングとペーシングは、特定の時間内に配信される広告の量を制限することにより、アプリのユーザー体験を向上させます。キャッピングとペーシングについての詳細は、こちらをご覧ください。

Note:  プレースメントの上限に達したときにユーザーに広告の視聴を促すトラフィックドライバー(動画リワードボタン)を表示しないようにするには、以下のメソッドを呼んで、特定のプレースメントが広告の制限に達しているかどうかを確認する必要があります。
IronSource.isRewardedVideoPlacementCapped("Your Placement");

アベイラビリティをリクエストすると、TRUE の応答が返される場合がありますが、プレースメントが上限に達している場合、広告はユーザーに配信されません

ダイナミックユーザー ID

ダイナミックユーザー ID は、AdRewarded トランザクションを検証するためのパラメーターであり、セッション全体を通して変更できます。サーバー間コールバックを介してこのパラメーターを受け取るには、showRewardedVideo を呼び出す前にパラメーターを設定する必要があります。これにより、リワードの詳細を含む dynamicUserId パラメーターをコールバックURLで受け取ります。

IronSource.setDynamicUserId("UserID");

ステップ 3. ユーザーにリワードを付与する

ユーザーに正常にリワードを与えるために、ironSource SDK を初期化する前に、userID を設定していることを確認してください。

ユーザーが正常にビデオ視聴を完了するたびに、ironSource SDK は onAdRewarded イベントを発火します。RewardedVideoListener は、このイベントを受信するために配置されるため、ユーザーへ正常にリワードを付与することができます。

Note: onAdRewardedonAdClosed イベントは非同期です。必ず、onAdClosed イベントの後に onAdRewarded が発火された場合でも、リワードを付与するようにリスナーを設定してください。

Placement オブジェクトには、LevelPlay Admin で定義されているプレースメントのリワード名とリワード額の両方が含まれています:

public void onAdRewarded(Placement placement, AdInfo adInfo) {
    //TODO - here you can reward the user according to the given amount
    String rewardName = placement.getRewardName();
    int rewardAmount = placement.getRewardAmount();
}
Note: LevelPlay アカウントのデフォルト設定では、アプリクライアント内のAdRewarded:amount コールバックを介してユーザーの視聴完了/リワードを通知します。さらに、バックエンドサーバーへの通知も受信したい場合は、サーバー間コールバックをオンにすることができます。

サーバー間コールバック

サーバー間コールバックをオンにする場合は、ironSource SDK の初期化前にユーザー ID を設定し、同じ視聴完了イベントに対してユーザーに二回以上リワードを与えないように注意してください。

クライアント側のコールバックとサーバー間コールバックの両方が発火される為、視聴完了ごとに二つの通知が届きます。

サーバー間コールバックを利用するには、こちらをご覧ください。

初めての実装のヒント
これがアプリケーションの初めての実装である場合、LevelPLay ダッシュボードではアプリはデフォルトで「テストモード」になります。アプリがテストモードになっている間、ironSource SDK は、SDK プロセスの可視性を高めるために、より多くのログをコンソールに出力します。広告枠をテストするには、テストデバイスを設定します。また、本番環境をオンにするまでは、収益を生み出さないテスト用広告が配信されます。アプリの本番環境への移行準備ができたら、「 Ad Units 」ページで必ず「 Go Live! 」を選択してください。

ironsource-go-live-with-rewarded-video

完了!
これで、アプリで動画リワードを配信する準備が整いました!


次のステップは?
実装ガイドに従って、メディエーションプラットフォームに追加の動画リワードアドネットワークを設定するか、追加の広告ユニットを実装します: