リワード広告: パブリッシャー向けスタートガイド

リワード広告は、メディエーション用に選択しているサードパーティ ネットワークからのみ利用可能です。

前提条件

  • Android Studio 1.0 以降を実行すること
  • Android API レベル 9 以降向けに開発すること
  • Google Mobile Ads SDK 9.0 以降

サンプルをダウンロードする

サンプルアプリをダウンロードして、メディエーションが行われるリワード広告の動作をご確認ください。 現在サポートされているメディアタイプは動画のみです。 動画リワード広告メディエーション用に、メディエーション アダプタ、広告ネットワーク別の設定、リワード インタースティシャル広告ユニット ID を含める必要があります。

プロジェクトにメディエーションを追加する

Firebase と Mobile Ads SDK をプロジェクトに組み込みます

ネットワーク アダプタと SDK を追加する

これで、動画リワード広告の配信元として使用するすべての広告ネットワークの SDK とアダプタをダウンロードしてプロジェクトに追加する準備ができました。

Android Studio では、プロジェクトの libs フォルダに JAR ファイルを含めます。 JAR ファイルがビルドに含まれるように、build.gradle ファイルに次の行が含まれていることを確認してください。

compile fileTree(dir: 'libs', include: ['*.jar'])

Eclipse では、プロジェクトの libs フォルダに JAR ファイルを含めます。プロジェクトを右クリックして [プロパティ] を選択します。次に、すべての JAR ファイルを Java ビルドパスに追加します。

現時点では使用していなくても今後使用する可能性のあるネットワークは、そのアダプタと SDK を統合しておくことをおすすめします。 あらかじめ統合しておくと、AdMob アカウントで設定を変更するだけでそのネットワークの広告を配信できます(アプリのコードに変更を加える手間が省けます)。 ただし、SDK を追加した分だけアプリのバイナリサイズが増えるので、その点も考慮に入れてください。

ネットワークの設定を含める

AndroidManifest.xml ファイルにエントリを追加するか、使用する各広告ネットワークで必要なその他の設定の変更を行います。 メディエーション対象にする広告ネットワークに必要な追加の設定をドキュメントで調べてください。

たとえば、各広告ネットワークでは通常、AndroidManifest.xml ファイルにアクティビティ宣言を追加する必要があります。また、広告を配信するために追加の権限が必要になる場合もあります。 アプリには、メディエーション対象のすべての広告ネットワークで必要な権限のスーパーセットが含まれている必要があります。

動画リワード広告を初期化する

public class MainActivity extends ActionBarActivity {
    private RewardedVideoAd mAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Use an activity context to get the rewarded video instance.
        mAd = MobileAds.getRewardedVideoAdInstance(this);
        mAd.setRewardedVideoAdListener(this);
    }

    ...
}

RewardedVideoAd オブジェクトは、MobileAds.getRewardedVideoAdInstance を使用して取得できます。

動画リワード広告のライフサイクル イベントの通知を受け取るには、RewardedVideoAdListener を実装する必要があります。 リワード広告リスナーは、setRewardedVideoAdListener() メソッドを使用して設定します。 このリスナーには、メディエーション対象のすべてのネットワークからのイベントが自動的に通知されます。 たとえば、RewardedVideoAdListeneronRewarded() メソッドを使用すると、ユーザーが動画を視聴したことに対する報酬を受け取ったことが通知されます。

動画リワード広告をリクエストする

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RewardedVideoAd mAd = MobileAds.getRewardedVideoAdInstance(this);
    mAd.setRewardedVideoAdListener(this);
    loadRewardedVideoAd();
}

private void loadRewardedVideoAd() {
    mAd.loadAd(AD_UNIT_ID, new AdRequest.Builder().build());
}

RewardedVideoAd のシングルトン設計に従い、広告を読み込むためのリクエストは、共有インスタンスに対して行う必要があります。

動画を事前に読み込むことができるように、loadAd() をできるだけ早く(たとえば、アクティビティの onCreate メソッドで)呼び出すことを強くおすすめします。

イベント通知を設定する

RewardedVideoAdListener により、動画リワード広告のライフサイクル イベントが通知されます。 このデリゲートで最も重要なイベントは onRewarded() で、これは、ユーザーが動画の視聴に対して報酬を受け取る必要があるときに呼び出されます。 このリスナーを設定してから広告を読み込む必要があり、onRewarded() も実装する必要があります。 このリスナーから他のメソッドを実装することもできます。

@Override
public void onRewarded(RewardItem reward) {
    Toast.makeText(this, "onRewarded! currency: " + reward.getType() + "  amount: " +
            reward.getAmount(), Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoAdLeftApplication() {
    Toast.makeText(this, "onRewardedVideoAdLeftApplication",
            Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoAdClosed() {
    Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
    Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoAdLoaded() {
    Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoAdOpened() {
    Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
}

@Override
public void onRewardedVideoStarted() {
    Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
}

追加のパラメータ

広告ネットワークでは、Google Mobile Ads SDK で提供されるターゲット設定パラメータ以外の、追加のターゲット設定パラメータや入力をサポートしている場合があります。AdRequest.BuilderaddNetworkExtrasBundle() メソッドを使用して、特定のメディエーション ネットワークに追加のパラメータを渡すことができます。 パラメータの送信先であるアダプタクラスと、アダプタで使用する値のバンドルを渡します。

次の例では、広告ネットワーク アダプタへの音声をミュートするオプションを渡しています。

Bundle bundle = new Bundle();
bundle.putBoolean("mute_audio", true);

AdRequest adRequest = new AdRequest.Builder()
    .addNetworkExtrasBundle(MyAdNetworkAdapter.class, bundle)
    .build();

上記のコード スニペットでは、例として MyAdNetworkAdapter クラスが使用されています。 これは、バンドルで想定されている広告ネットワークに対応するアダプタクラスに置き換える必要があります。

アダプタで追加のパラメータがサポートされている場合、広告ネットワークには、追加のパラメータをそのネットワークに渡す方法を説明するドキュメントが用意されています。

動画リワード広告を表示する

if (mAd.isLoaded()) {
   mAd.show();
}

動画リワード広告を表示する前に、広告の読み込みが完了していることを確認することをおすすめします。 isLoaded() メソッドにより、動画リワード広告リクエストが正常に実行されたかどうかが示されます。

ライフサイクル イベントを転送する

親アクティビティのライフサイクル イベントを RewardedVideoAd オブジェクトに転送するには、親アクティビティの onResume()onPause()onDestroy() メソッドでそれぞれ resume()pause()destroy() メソッドを呼び出します。

アクティビティのライフサイクル イベントの転送を実装すると、次のようになります。

@Override
public void onResume() {
    mAd.resume(this);
    super.onResume();
}

@Override
public void onPause() {
    mAd.pause(this);
    super.onPause();
}

@Override
public void onDestroy() {
    mAd.destroy(this);
    super.onDestroy();
}

Unity と統合する

動画リワード広告メディエーションを Unity プロジェクトに組み込む手順については、動画リワード広告メディエーションをご覧ください。

フィードバックを送信...