Android の動画リワード実装
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();
メディエーションを介して、アドネットワークから利用可能な動画が取得出来たら、この動画広告をユーザーに表示する準備が整ったことを意味します。ユーザーにとってベストな広告体験を提供できる様、広告を表示する前にゲームアクション・オーディオを止める事を忘れないでください。
広告プレースメント
LevelPlay Ad Placements ツールを使用すると、動画リワード体験をカスタマイズおよび最適化できます。このツールを使用すると、リワードに応じてさまざまなプレースメントからユーザーに動画を提示できます。以下の関数を使用して、広告を表示するプレースメントを指定できます。詳細については、広告プレースメントのドキュメントをご覧ください。
動画広告を配信する
ironSource クラスの showRewardedVideo() メソッドを呼び出すことで、ユーザーに動画広告を表示し、広告を表示する特定のプレースメントを指定できます。このプレースメントのリワード設定は、ironSource サーバーから取得されます:
IronSource.showRewardedVideo(placementName);
各広告プレースメントに関連付けられている特定のリワードの詳細を取得するには、次の関数を呼びます:
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 の広告プレースメントに加えて、選択したプレースメントの広告表示回数上限であるキャップと、広告表示間隔であるペースが設定できるようになりました。キャッピングとペーシングは、特定の時間内に配信される広告の量を制限することにより、アプリのユーザー体験を向上させます。キャッピングとペーシングについての詳細は、こちらをご覧ください。
IronSource.isRewardedVideoPlacementCapped("Your Placement");
アベイラビリティをリクエストすると、TRUE
の応答が返される場合がありますが、プレースメントが上限に達している場合、広告はユーザーに配信されません。
ダイナミックユーザー ID
ダイナミックユーザー ID は、AdRewarded トランザクションを検証するためのパラメーターであり、セッション全体を通して変更できます。サーバー間コールバックを介してこのパラメーターを受け取るには、showRewardedVideo を呼び出す前にパラメーターを設定する必要があります。これにより、リワードの詳細を含む dynamicUserId パラメーターをコールバックURLで受け取ります。
IronSource.setDynamicUserId("UserID");
ステップ 3. ユーザーにリワードを付与する
ユーザーが正常にビデオ視聴を完了するたびに、ironSource SDK は onAdRewarded イベントを発火します。RewardedVideoListener は、このイベントを受信するために配置されるため、ユーザーへ正常にリワードを付与することができます。
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(); }
サーバー間コールバック
サーバー間コールバックをオンにする場合は、ironSource SDK の初期化前にユーザー ID を設定し、同じ視聴完了イベントに対してユーザーに二回以上リワードを与えないように注意してください。
クライアント側のコールバックとサーバー間コールバックの両方が発火される為、視聴完了ごとに二つの通知が届きます。
サーバー間コールバックを利用するには、こちらをご覧ください。
これがアプリケーションの初めての実装である場合、LevelPLay ダッシュボードではアプリはデフォルトで「テストモード」になります。アプリがテストモードになっている間、ironSource SDK は、SDK プロセスの可視性を高めるために、より多くのログをコンソールに出力します。広告枠をテストするには、テストデバイスを設定します。また、本番環境をオンにするまでは、収益を生み出さないテスト用広告が配信されます。アプリの本番環境への移行準備ができたら、「 Ad Units 」ページで必ず「 Go Live! 」を選択してください。
完了!
これで、アプリで動画リワードを配信する準備が整いました!
実装ガイドに従って、メディエーションプラットフォームに追加の動画リワードアドネットワークを設定するか、追加の広告ユニットを実装します: