前提条件
- Google Mobile Ads SDK 17.2.0 以降
- スタートガイドの手順に沿って、Google Mobile Ads SDK をインポートし、Android マニフェストを更新していること
リワード広告のオブジェクトを作成する
リワード広告は、RewardedAd
オブジェクトによってリクエストされ、表示されます。最初のステップは、RewardedAd
をインスタンス化することです。これは次のコード スニペットの Activity
の onCreate()
メソッドで行われます。
Java
import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd rewardedAd; @Override protected void onCreate(Bundle savedInstanceState) { ... rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); } }
Kotlin
import com.google.android.gms.ads.rewarded.RewardedAd class MainActivity : Activity() { private lateinit var rewardedAd: RewardedAd override fun onCreate(savedInstanceState:Bundle) { ... rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") } }
コンストラクタは、以下の引数を取ります。
Activity
コンテキスト- リワード広告を読み込む際に使用する広告ユニット ID
常にテスト広告でテストする
アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告でテストすると、アカウントが停止される場合があります。
下記の Android リワード広告向けのテスト専用広告ユニット ID を使うと、テスト広告を簡単に読み込むことができます。
ca-app-pub-3940256099942544/5224354917
この ID は、すべてのリクエストに対してテスト広告を返す特別な ID で、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、テスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告でご確認いただけます。
広告を読み込む
リワード広告を読み込むには、RewardedAd
オブジェクトの loadAd()
メソッドを呼び出します。このメソッドでは、引数として AdRequest
と RewardedAdLoadCallback
のインスタンスが使用されます。
Java
import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd rewardedAd; @Override protected void onCreate(Bundle savedInstanceState) { ... rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); } }
Kotlin
import com.google.android.gms.ads.rewarded.RewardedAd class MainActivity : Activity() { private val rewardedAd: RewardedAd override fun onCreate(savedInstanceState:Bundle) { rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") val adLoadCallback = object: RewardedAdLoadCallback() { fun onRewardedAdLoaded() { // Ad successfully loaded. } fun onRewardedAdFailedToLoad(adError: LoadAdError) { // Ad failed to load. } } rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback) } }
RewardedAdLoadCallback
の onRewardedAdLoaded()
メソッドと onRewardedAdFailedToLoad()
メソッドは、広告の読み込み操作の結果を提供します。
オーバーライド可能なメソッド | |
---|---|
onRewardedAdLoaded() |
このメソッドは、広告の読み込みが完了したときに実行されます。 |
onRewardedAdFailedToLoad() |
このメソッドは、広告の読み込みが失敗したときに呼び出され、発生したエラーのタイプを表す、タイプ LoadAdError のエラー パラメータが含まれます。詳細については、広告読み込みエラーのデバッグのドキュメントをご覧ください。
|
広告の表示
リワード広告をユーザーに表示する前に、リワード広告のコンテンツを視聴して報酬を受け取るかどうか、明確な選択肢をユーザーに提示する必要があります。リワード広告は、必ずユーザーの許可を受けてから表示しなければなりません。
RewardedAd
を表示するには、isLoaded()
メソッドを使用して読み込みが完了したことを確認してから、show()
を呼び出します。
show()
メソッドは、引数として Activity
と RewardedAdCallback
のインスタンスを取ります。Activity
インスタンスは、リワード広告が表示されるアクティビティである必要があります。
先ほどのサンプルコードのリワード広告は、以下のようにボタンの OnClickListener
に表示できます。
Java
myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (rewardedAd.isLoaded()) { Activity activityContext = MainActivity.this RewardedAdCallback adCallback = new RewardedAdCallback() { @Override public void onRewardedAdOpened() { // Ad opened. } @Override public void onRewardedAdClosed() { // Ad closed. } @Override public void onUserEarnedReward(@NonNull RewardItem reward) { // User earned reward. } @Override public void onRewardedAdFailedToShow(AdError adError) { // Ad failed to display. } }; rewardedAd.show(activityContext, adCallback); } else { Log.d("TAG", "The rewarded ad wasn't loaded yet."); } } });
Kotlin
myButton.setOnClickListener { if (rewardedAd.isLoaded) { val activityContext: Activity = this@MainActivity val adCallback = object: RewardedAdCallback() { override fun onRewardedAdOpened() { // Ad opened. } override fun onRewardedAdClosed() { // Ad closed. } override fun onUserEarnedReward(@NonNull reward: RewardItem) { // User earned reward. } override fun onRewardedAdFailedToShow(adError: AdError) { // Ad failed to display. } } rewardedAd.show(activityContext, adCallback) } else { Log.d("TAG", "The rewarded ad wasn't loaded yet.") } }
広告イベント通知を受信する
show()
メソッドに渡される RewardedAdCallback
は、リワード広告のイベント通知を受け取ります。RewardedAdCallback
のオーバーライド可能なメソッドは、それぞれリワード広告のライフサイクルで生じるイベントに対応しています。たとえば、onUserEarnedReward()
メソッドを使用すると、ユーザーに報酬を提供するのに最適なタイミングを把握できます。各広告イベント メソッドについて詳しくは、以下の表をご覧ください。
オーバーライド可能なメソッド | |
---|---|
onRewardedAdOpened() |
このメソッドは、広告がデバイスの画面いっぱいに表示されると呼び出されます。 |
onRewardedAdClosed() |
このメソッドは、ユーザーが「閉じる」アイコンまたは「戻る」ボタンをタップして、リワード広告を閉じるときに呼び出されます。アプリで音声出力やゲームループを一時停止している場合は、ここで再開すると効果的です。 |
onUserEarnedReward()
|
このメソッドは、ユーザーが広告の操作に対して報酬を受け取る必要があるときに呼び出されます。広告ユニットで設定されている報酬の詳細情報を取得するには、RewardItem パラメータの getType() メソッドと getAmount() メソッドを使用します。 |
onRewardedAdFailedToShow()
|
このメソッドは、広告の表示に失敗したときに呼び出されます。発生したエラーのタイプを表す adError パラメータが含まれます。エラーコード(adError.getCode() )の有効な値は、RewardedAdCallback クラスの定数として定義されています。
|
RewardedAdCallback を使用して次のリワード広告をプリロードする
RewardedAd
は使い捨てオブジェクトです。つまり、リワード広告を一度表示すると、このオブジェクトを使って他の広告を読み込むことはできません。他のリワード広告をリクエストするには、新しい RewardedAd
オブジェクトを作成します。
おすすめの方法は、RewardedAdCallback
の onRewardedAdClosed()
メソッドで別のリワード広告を読み込んでおき、前のリワード広告の表示が終了したらすぐに次のリワード広告の読み込みを開始できるようにすることです。
Java
public RewardedAd createAndLoadRewardedAd() { RewardedAd rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917"); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); return rewardedAd; } @Override public void onRewardedAdClosed() { this.rewardedAd = createAndLoadRewardedAd(); }
Kotlin
fun createAndLoadRewardedAd(): RewardedAd { val rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917") val adLoadCallback = object: RewardedAdLoadCallback() { override fun onRewardedAdLoaded() { // Ad successfully loaded. } override fun onRewardedAdFailedToLoad(adError: LoadAdError) { // Ad failed to load. } } rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback) return rewardedAd } fun onRewardedAdClosed() { this.rewardedAd = createAndLoadRewardedAd() }
複数のリワード広告を読み込む
複数のリワード広告を読み込むには、広告ごとにリワード広告のオブジェクトを作成するおよび広告を読み込むで説明されている手順を行います。次のコード スニペットは、2 つの異なる広告プレースメントに 2 つのリワード広告を読み込む方法を示しています。
Java
package ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd gameOverRewardedAd; private RewardedAd extraCoinsRewardedAd; @Override protected void onCreate(Bundle savedInstanceState) { ... gameOverRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917"); extraCoinsRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917"); } public RewardedAd createAndLoadRewardedAd(String adUnitId) { RewardedAd rewardedAd = new RewardedAd(this, adUnitId); RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() { @Override public void onRewardedAdLoaded() { // Ad successfully loaded. } @Override public void onRewardedAdFailedToLoad(LoadAdError adError) { // Ad failed to load. } }; rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback); return rewardedAd; } }
Kotlin
import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.rewarded.RewardedAd class MainActivity: Activity() { private val gameOverRewardedAd:RewardedAd private val extraCoinsRewardedAd:RewardedAd override fun onCreate(savedInstanceState:Bundle) { ... gameOverRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917") extraCoinsRewardedAd = createAndLoadRewardedAd( "ca-app-pub-3940256099942544/5224354917") } fun createAndLoadRewardedAd(adUnitId:String): RewardedAd { val rewardedAd = RewardedAd(this, adUnitId) val adLoadCallback = object: RewardedAdLoadCallback() { override fun onRewardedAdLoaded() { // Ad successfully loaded. } override fun onRewardedAdFailedToLoad(adError: LoadAdError) { // Ad failed to load. } } rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback) return rewardedAd } }
よくある質問
RewardedAd
の報酬の詳細情報を取得することはできますか?- はい。
onUserEarnedReward()
コールバックが呼び出される前に報酬金額を確認する必要がある場合、RewardedAd
ではgetRewardItem()
メソッドを使って、広告の読み込み後に報酬金額の情報を取得することができます。 - 初期化の呼び出しでタイムアウトは発生しますか?
- メディエーション ネットワークの初期化が完了していなくても、Google Mobile Ads SDK では 10 秒が経過すると
OnInitializationCompleteListener
が呼び出されます。 - 初期化コールバックを取得したときに対応準備が完了していないメディエーション ネットワークはどうなりますか?
広告は、
OnInitializationCompleteListener
のコールバック内で読み込むことが推奨されています。メディエーション ネットワークの対応準備が完了していなくても、Google Mobile Ads SDK はそのネットワークに対して広告を要求します。そのため、いったんタイムアウトされても、その後に初期化が完了すれば、メディエーション ネットワークはそのセッション中に発生する後続の広告リクエストに対応することができます。MobileAds.getInitializationStatus()
を呼び出せば、アプリ セッションの間、すべてのアダプタの初期化ステータスを継続的にポーリングすることができます。- 特定のメディエーション ネットワークの対応準備が完了していない理由を確認するには、どうすればよいですか?
AdapterStatus.getDescription()
を参照すると、アダプタが広告リクエストの処理に対応できない理由を確認できます。
次のステップ
AdMob 管理画面で独自の動画リワード広告ユニットを作成します。
次のような別の広告フォーマットを試します。