動画リワード広告では、ユーザーは、フルスクリーンの広告動画を最後まで視聴することと引き換えにアプリ内報酬を獲得できます。このガイドでは、AdMob の動画リワード広告を Android アプリに組み込む方法について説明します。
前提条件
- Google Mobile Ads SDK がインポート済みであること(単独または Firebase の一部として)
動画リワード広告の初期化
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()
メソッドを使って設定されています。このリスナーには、お客様がメディエーションの対象としている全ネットワークからのイベントが自動的に通知されます。たとえば、あるユーザーが動画を視聴して報酬が与えられる場合には、RewardedVideoAdListener
の onRewarded()
メソッドを通じてお客様に通知されます。
動画リワード広告のリクエスト
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 のサンプル
動画チュートリアル
Codelab
次のステップ
AdMob 管理画面で独自の動画リワード広告ユニットを作成します。
以下の別の広告フォーマットを試します。