Android の動画リワード実装
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 、フィールドの説明、タイプなどの利用可能な広告情報データの完全なリストはこちらで確認できます。
リスナーの完全な実装については、こちらで確認できます。
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();
メディエーションを介して、アドネットワークから利用可能な動画が取得出来たら、この動画広告をユーザーに表示する準備が整ったことを意味します。ユーザーにとってベストな広告体験を提供できる様、広告を表示する前にゲームアクション・オーディオを止める事を忘れないでください。
広告プレースメント
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 は onRewardedVideoAdRewarded イベントを発火します。RewardedVideoListener は、このイベントを受信するために配置されるため、ユーザーへ正常にリワードを付与することができます。
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(); }
サーバー間コールバック
サーバー間コールバックをオンにする場合は、ironSource SDK の初期化前にユーザー ID を設定し、同じ視聴完了イベントに対してユーザーに二回以上リワードを与えないように注意してください。
クライアント側のコールバックとサーバー間コールバックの両方が発火される為、視聴完了ごとに二つの通知が届きます。
サーバー間コールバックを利用するには、こちらをご覧ください。
これがアプリケーションの初めての実装である場合、LevelPLay ダッシュボードではアプリはデフォルトで「テストモード」になります。アプリがテストモードになっている間、ironSource SDK は、SDK プロセスの可視性を高めるために、より多くのログをコンソールに出力します。広告枠をテストするには、テストデバイスを設定します。また、本番環境をオンにするまでは、収益を生み出さないテスト用広告が配信されます。アプリの本番環境への移行準備ができたら、「 Ad Units 」ページで必ず「 Go Live! 」を選択してください。
完了!
これで、アプリで動画リワードを配信する準備が整いました!
実装ガイドに従って、メディエーションプラットフォームに追加の動画リワードアドネットワークを設定するか、追加の広告ユニットを実装します: