Android 動画リワード広告

動画リワード広告とは、アプリ内で使用可能なアイテムやポイントをユーザーに付与する代わりに、約15秒〜30秒程度の動画広告を表示する広告フォーマットです。
GenieeSDKでは、メディエーション機能により各アドネットワークの動画リワード広告を表示します。

実装準備

動画リワード広告では、以下の実装準備が必要です。

  • Geniee SDK

    下記スタートガイドより、Geniee SDK(GNAdSDK) をアプリに導入する必要があります。
    スタートガイド

  • 各アドネットワーク用SDKとアダプター

    動画リワードでは、アドネットワーク毎のSDKの設定とアダプター(GNSRewardAdapter)の設定が必要です。
    全アドネットワークを一括で設定するには、以下リンクの導入方法を参照して下さい。
    全アドネットワークの一括実装

    また、アドネットワークを個別で利用するには、以下よりアドネットワークのリンクを選択して、導入方法を参照して下さい。

    アドネットワーク 検証済みバージョン
    maio 1.1.13
    AppLovin 9.14.5
    Unity Ads 3.4.8
    AdColony 3.3.5
    CAReward 2.4.0
    Tapjoy 12.7.0
    Vungle 6.8.0
    Nend 5.4.2
    AMoAd playable-1.0.0
    TikTok 2.0.0.0

クラスとインタフェース

Android 動画広告配信には、下記クラスを使用します。

  • GNSRewardVideoAd 非同期で動画リワード広告を取得、表示用クラス
  • GNSRewardVideoAdListener リワード動画広告ロード、再生、リワード付与、終了処理用インタフェース

動画リワード広告の実装

  1. GNSVideoRewardをインポートします。

    import jp.co.geniee.gnadsdk.rewardvideo.GNSRewardVideoAd;
    import jp.co.geniee.gnadsdk.rewardvideo.GNSRewardVideoAdListener;
    import jp.co.geniee.gnadsdk.rewardvideo.GNSVideoRewardData;
    import jp.co.geniee.gnadsdk.rewardvideo.GNSVideoRewardException;
    
    1
    2
    3
    4
  2. GNSRewardVideoAdのインスタンスをZoneIDを指定して作成します。

    private GNSRewardVideoAd mReward;
    
    setContentView(R.layout.activity_main);
    mReward = new GNSRewardVideoAd("YOUR_ZONE_ID", MainActivity.this);
    
    1
    2
    3
    4
  3. GNAdVideoListenerインタフェースを実装します。

    mReward.setRewardVideoAdListener(new GNSRewardVideoAdListener() {
       @Override
       public void rewardVideoAdDidReceiveAd() {
           Log.i("GNSReward", "動画広告ロード成功");
       }
       @Override
       public void rewardVideoAdDidStartPlaying(GNSVideoRewardData data) {
           Log.i("GNSReward", "動画広告再生開始。(" + data.adName + ")");
       }
       @Override
       public void didRewardUserWithReward(GNSVideoRewardData data) {
           Log.i("GNSReward", "ユーザにリワードを付与。(" +
           	data.adName + " " + 
           	data.amount + data.type + ")");
       }
       @Override
       public void rewardVideoAdDidClose(GNSVideoRewardData data) {
           Log.i("GNSReward", "動画広告が閉じられた。(" + data.adName + ")");
       }
       @Override
       public void didFailToLoadWithError(GNSVideoRewardException e) {
           Log.i("GNSReward", "動画広告ロード失敗。(" + e.getAdnetworkName() +
           	" Code:" + e.getCode() + " " +
           	 e.getMessage());
       }
    });
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
  4. 動画リワードのloadRequestメソッドを実装します。

    • 7.0.0以上のGeniee SDK バージョンを使用している場合
    mReward.loadRequest(isRTB);
    
    1
    • isRTB: trueはRTB配信、falseはadapter mediation配信

    • 7.0.0以下のGenieeSDKバージョンを利用している場合

    mReward.loadRequest(); // Deprecated
    
    1
    • ロードリクエストには数秒以上かかることがあるので、早い段階で動画広告をリクエストしてください。
    • 1つの動画の再生完了後に別の動画を見せる場合、再びロードリクエストを行う必要があります。
  5. canShowメソッドでloadRequestメソッドが正常に完了したことを確認し、showメソッドで動画を表示します。

    if (mReward.canShow()) {
       mReward.show();
    } else {
       Log.i("GNSReward", "動画広告ロード中です。");
    }
    
    1
    2
    3
    4
    5
    • showは必ずloadRequest実行後に実施するようにして下さい。
  6. コールバックメソッドのdidRewardUserWithRewardで、ユーザーに報酬を付与します。

    @Override
    public void didRewardUserWithReward(GNSVideoRewardData data) {
      Log.i("GNSReward", "ユーザにリワードを付与。(" + data.adName + " " + data.amount + data.type + ")"));
    }
    
    1
    2
    3
    4
    • ジーニーの動画リワード広告で収益を最大化するためには、動画視聴者に報酬を与えることが重要です。GNSAdRewardメソッドには以下の項目が含まれます。

      • reward.type:SSPにおける報酬タイプの設定
      • reward.amount:SSPにおける報酬量の設定
  7. Activityのライフサイクルを処理のつなぎ込みを実施します。このつなぎ込みは広告の停止や再開の制御に使われます。

    @Override
    protected void onStart() {
       super.onStart();
       if (mReward != null) {
           mReward.onStart();
       }
    }
    
    @Override
    protected void onResume() {
       super.onResume();
       if (mReward != null) {
           mReward.onResume();
       }
    }
    
    @Override
    protected void onPause() {
       if (mReward != null) {
           mReward.onPause();
       }
       super.onPause();
    }
    
    @Override
    protected void onStop() {
       if (mReward != null) {
           mReward.onStop();
       }
       super.onStop();
    }
    
    @Override
    protected void onDestroy() {
       if (mReward != null) {
           mReward.onDestroy();
       }
       super.onDestroy();
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
  • アプリケーション全体で動画リワードを使用する場合 mReward.onDestroy()の実装は除外してください。 mReward.onDestroy()を実装すると動画リワード内のデータが破棄されます。

マニフェストファイルの記述

マニフェストファイル AndroidManifest.xml に必要情報を記述します。

  1. Mavenでライブラリを導入するの手順を実行した場合、この手順は実行する必要はありません。

    手動導入手順はこちら
    • マニフェストファイルの<application>にSDKが使用するアクティビティの情報を記述します。

      <!-- Geniee Reward Video -->
      <activity android:name="jp.co.geniee.gnadsdk.rewardvideo.GNSRewardVideoActivity"
          android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
          android:launchMode="singleTop"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
      
      1
      2
      3
      4
      5

より高単価な広告を表示する実装方法

広告準備完了イベントから数十秒経過後に広告を表示することで、単価をより高くすることがあります。 これは複数の広告を同時にリクエストして最初の広告の準備が完了した時点でアプリ側に準備完了を通知しており、それよりも高単価な広告がその数秒後に準備完了となる可能性があるためです。 そのため、広告取得処理を事前に実施して頂くことで、より高単価な広告を取得することができます。

Last Updated: 2020-6-22 15:40:07