Rewarded Video Ads (Legacy API)

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

前提条件

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

Java

package ...

import com.google.android.gms.ads.doubleclick.PublisherAdRequest;
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);
                // 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.doubleclick.PublisherAdRequest
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)
                // 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);
    
    // Use an activity context to get the rewarded video instance.
    mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
    mRewardedVideoAd.setRewardedVideoAdListener(this);

    loadRewardedVideoAd();
}
private void loadRewardedVideoAd() {
    mRewardedVideoAd.loadAd("/6499/example/rewarded-video",
            new PublisherAdRequest.Builder().build());
}

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    
    // Use an activity context to get the rewarded video instance.
    mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this)
    mRewardedVideoAd.rewardedVideoAdListener = this

    loadRewardedVideoAd()
}

private fun loadRewardedVideoAd() {
    mRewardedVideoAd.loadAd("/6499/example/rewarded-video",
            PublisherAdRequest.Builder().build())
}

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

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

テストには必ずテスト広告を使用する

アプリの開発中やテストの際は必ずテスト広告を使用し、実際の広告は使用しないでください。実際の広告を使用すると、アカウントの停止につながる可能性があります。

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

/6499/example/rewarded-video

この ID は、すべてのリクエストに対してテスト広告を返す特別な 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

次のステップ