Android の動画リワード実装

Before you start

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

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

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

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

IronSource.setRewardedVideoListener(new RewardedVideoListener() {
    /**
     * Invoked when the RewardedVideo ad view has opened.
     * Your Activity will lose focus. Please avoid performing heavy
     * tasks till the video ad will be closed.
     */
    @Override
    public void onRewardedVideoAdOpened() {
    }

    /**
     * Invoked when the RewardedVideo ad view is about to be closed.
     * Your activity will now regain its focus.
     */
    @Override
    public void onRewardedVideoAdClosed() {
    }

    /**
     * Invoked when there is a change in the ad availability status.
     *
     * @param - available - value will change to true when rewarded videos are *available.
     *          You can then show the video by calling showRewardedVideo().
     *          Value will change to false when no videos are available.
     */
    @Override
    public void onRewardedVideoAvailabilityChanged(boolean available) {
        //Change the in-app 'Traffic Driver' state according to availability.
    }

    /**
     * Invoked when the user completed the video and should be rewarded.
     * If using server-to-server callbacks you may ignore this events and wait *for the callback from the ironSource server.
     *
     * @param - placement - the Placement the user completed a video from.
     */
    @Override
    public void onRewardedVideoAdRewarded(Placement placement) {
        /** here you can reward the user according to the given amount.
         String rewardName = placement.getRewardName();
         int rewardAmount = placement.getRewardAmount();
         */
    }
    /**
     * Invoked when RewardedVideo call to show a rewarded video has failed
     * IronSourceError contains the reason for the failure.
     */
    @Override
    public void onRewardedVideoAdShowFailed(IronSourceError error) {
    }

    /**
     * Invoked when the end user clicked on the RewardedVideo ad
     */
    @Override
    public void onRewardedVideoAdClicked(Placement placement){
    }

    /**
     * Note: the events AdStarted and AdEnded below are not available for all supported rewarded video 
      *  ad networks. Check which events are available per ad network you choose 
     *  to include in your build.
     *  We recommend only using events which register to ALL ad networks you 
     *  include in your build.
     * Invoked when the video ad starts playing.
     */
    @Override
    public void onRewardedVideoAdStarted(){
    }

    /**
     * Invoked when the video ad finishes plating.
     */
    @Override
    public void onRewardedVideoAdEnded(){
    }
});

Ad Info イベント

ironSource SDK 7.2.3.1 の一部として、新しいリスナーを使用してネットワーク、セグメント、A/B グループなど、より多くのデータをコールバックで取得できます。

API 、フィールドの説明、タイプなどの利用可能な広告情報データの完全なリストはこちらで確認できます。

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

Important! これらのリスナーを使用する場合は、データの重複を避けるために他の動画リワードリスナーの登録を解除することをお勧めします。

SDK の初期化

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

コールバック

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

エラーコード

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

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

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

IronSource.shouldTrackNetworkState(this, true);

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

広告のアベイラビリティ

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

public void onVideoAvailabilityChanged(boolean available)

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

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 は onRewardedVideoAdRewarded イベントを発火します。RewardedVideoListener は、このイベントを受信するために配置されるため、ユーザーへ正常にリワードを付与することができます。

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

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

public void onRewardedVideoAdRewarded(Placement placement)
{
    //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

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


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