動画リワード広告(従来の API)

動画リワード広告では、ユーザーは、フルスクリーンの広告動画を最後まで視聴することと引き換えにアプリ内報酬を獲得できます。このガイドでは、AdMob の動画リワード広告を Android アプリに組み込む方法について説明します。

前提条件

動画リワード広告の初期化

Java

    package ...

    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.MobileAds;
    import com.google.android.gms.ads.reward.RewardedVideoAd;

    public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener {
        private RewardedVideoAd mRewardedVideoAd;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
    
            // Use an activity context to get the rewarded video instance.
            mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
            mRewardedVideoAd.setRewardedVideoAdListener(this);
        }
        ...
    }

Kotlin

    package ...

    import com.google.android.gms.ads.AdRequest
    import com.google.android.gms.ads.MobileAds
    import com.google.android.gms.ads.reward.RewardedVideoAd

    class MainActivity : AppCompatActivity(), RewardedVideoAdListener {

    private lateinit var mRewardedVideoAd: RewardedVideoAd

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713")
    
            // Use an activity context to get the rewarded video instance.
            mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this)
            mRewardedVideoAd.rewardedVideoAdListener = this
        }
        ...
    }
    

RewardedVideoAd オブジェクトは MobileAds.getRewardedVideoAdInstance() を使って取得できます。

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

動画リワード広告のリクエスト

Java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");

        // Use an activity context to get the rewarded video instance.
        mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
        mRewardedVideoAd.setRewardedVideoAdListener(this);

        loadRewardedVideoAd();
    }
    private void loadRewardedVideoAd() {
        mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",
                new AdRequest.Builder().build());
    }
    

Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713")

        // Use an activity context to get the rewarded video instance.
        mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this)
        mRewardedVideoAd.rewardedVideoAdListener = this

        loadRewardedVideoAd()
    }

    private fun loadRewardedVideoAd() {
        mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",
                AdRequest.Builder().build())
    }

RewardedVideoAd のシングルトン設計に従い、広告の読み込みリクエストは共有インスタンスに対して行ってください。

動画をプリロードできるようにするため、loadAd() をできるだけ早く(Activity の onCreate() メソッド内などで)呼び出すことを強くおすすめします。

常にテスト広告でテストする

アプリの開発とテストでは実際の広告ではなく、必ずテスト広告を使ってください。実際の広告でテストすると、アカウントが停止される場合があります。

テスト広告を読み込むには、次に示す Android 動画リワード向けのテスト専用広告ユニット ID を使う方法が便利です。

ca-app-pub-3940256099942544/5224354917

この ID は、すべてのリクエストに対してテスト広告を返すように構成されており、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、テスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。

Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告でご確認いただけます。

イベント通知の設定

SDK の RewardedVideoAdListener インターフェースには、動画リワード広告のライフサイクル イベントに対応するメソッドがあります。広告を読み込む前に、アプリでこのインターフェースを実装するクラスを定義して setRewardedVideoAdListener に渡してください。

クラスで RewardedVideoAdListener を実装し、RewardedVideoAd オブジェクトにリスナーを設定したことを宣言する方法については、前述の動画リワード広告の初期化のコードサンプルに示されています。ここでは、リスナー メソッドの実装例を示します。

Java

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

    @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();
    }

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

Kotlin

    override fun onRewarded(reward: RewardItem) {
        Toast.makeText(this, "onRewarded! currency: ${reward.type} amount: ${reward.amount}",
                Toast.LENGTH_SHORT).show()
        // Reward the user.
    }

    override fun onRewardedVideoAdLeftApplication() {
        Toast.makeText(this, "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show()
    }

    override fun onRewardedVideoAdClosed() {
        Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show()
    }

    override fun onRewardedVideoAdFailedToLoad(errorCode: Int) {
        Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show()
    }

    override fun onRewardedVideoAdLoaded() {
        Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show()
    }

    override fun onRewardedVideoAdOpened() {
        Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show()
    }

    override fun onRewardedVideoStarted() {
        Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show()
    }

    override fun onRewardedVideoCompleted() {
        Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show()
    }
    

動画リワード広告の表示

Java

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

Kotlin

    if (mRewardedVideoAd.isLoaded) {
        mRewardedVideoAd.show()
    }
    

動画リワード広告は、読み込みが完了してから表示処理に入ることをおすすめします。動画リワード広告のリクエストに対して返された広告が読み込まれたかどうかは、isLoaded() メソッドで確認できます。

RewardedVideoAdListener を使った広告の再読み込み

前の動画リワード広告を表示した後に新しい動画リワード広告を読み込むには、RewardedVideoAdListener クラスの onRewardedVideoAdClosed() メソッドを使うと便利です。

Java

    @Override
    public void onRewardedVideoAdClosed() {
        // Load the next rewarded video ad.
        loadRewardedVideoAd();
    }
    

Kotlin

    override fun onRewardedVideoAdClosed() {
        loadRewardedVideoAd()
    }
    

ライフサイクル イベントの転送

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

以下に、Activity ライフサイクル イベントの転送のサンプルを示します。

Java

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

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

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

Kotlin

    override fun onPause() {
        super.onPause()
        mRewardedVideoAd.pause(this)
    }

    override fun onResume() {
        super.onResume()
        mRewardedVideoAd.resume(this)
    }

    override fun onDestroy() {
        super.onDestroy()
        mRewardedVideoAd.destroy(this)
    }
    

Unity と統合する

動画リワードを Unity プロジェクトに組み込む手順については、動画リワードの説明をご覧ください。

その他の参考情報

GitHub のサンプル

  • 動画リワードを使ったサンプルアプリ: Java | Kotlin

動画チュートリアル

Codelab

次のステップ