Prerequisites
- Google Mobile Ads SDK 19.7.0 以降
- スタートガイドの手順を完了していること
常にテスト広告でテストする
アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告を使用すると、アカウントが停止される可能性があります。
テスト広告を読み込む際は、次に示す Android リワード広告向けのテスト専用広告ユニット ID を使うと便利です。
ca-app-pub-3940256099942544/5224354917
この ID は、すべてのリクエストに対してテスト広告を返す特別な ID で、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、このテスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
リワード広告オブジェクトを読み込む
リワード広告を読み込むには、RewardedAd
クラスの静的 load()
メソッドを呼び出して RewardedAdLoadCallback
を渡します。これは通常、Activity
の onCreate()
メソッドで行います。他の形式の読み込みコールバックと同様に、RewardedAdLoadCallback
では LoadAdError
を利用して、より再現性の高いエラーの詳細を提供します。
Java
import com.google.android.gms.ads.rewarded.RewardedAd; public class MainActivity extends Activity { private RewardedAd rewardedAd; private final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { AdRequest adRequest = new AdRequest.Builder().build(); RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917", adRequest, new RewardedAdLoadCallback() { @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { // Handle the error. Log.d(TAG, loadAdError.toString()); rewardedAd = null; } @Override public void onAdLoaded(@NonNull RewardedAd ad) { rewardedAd = ad; Log.d(TAG, "Ad was loaded."); } }); } }
Kotlin
class MainActivity : AppCompatActivity() { private var rewardedAd: RewardedAd? = null private final var TAG = "MainActivity" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var adRequest = AdRequest.Builder().build() RewardedAd.load(this,"ca-app-pub-3940256099942544/5224354917", adRequest, object : RewardedAdLoadCallback() { override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, adError?.toString()) rewardedAd = null } override fun onAdLoaded(ad: RewardedAd) { Log.d(TAG, "Ad was loaded.") rewardedAd = ad } }) } }
[省略可] サーバーサイド認証(SSV)コールバックを検証する
サーバーサイド認証コールバックで追加データを必要とするアプリでは、リワード広告のカスタムデータ機能を使用する必要があります。リワード広告オブジェクトに設定されている文字列値はすべて、SSV コールバックの custom_data
クエリ パラメータに渡されます。カスタムデータ値が設定されていない場合、SSV コールバックは custom_data
クエリ パラメータ値を持ちません。
次のコードサンプルは、広告をリクエストする前にリワード広告オブジェクトにカスタムデータを設定する方法を示しています。
Java
RewardedAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379", new AdRequest.Builder().build(), new RewardedAdLoadCallback() { @Override public void onAdLoaded(RewardedAd ad) { Log.d(TAG, "Ad was loaded."); rewardedAd = ad; ServerSideVerificationOptions options = new ServerSideVerificationOptions .Builder() .setCustomData("SAMPLE_CUSTOM_DATA_STRING") .build(); rewardedAd.setServerSideVerificationOptions(options); } @Override public void onAdFailedToLoad(LoadAdError loadAdError) { Log.d(TAG, loadAdError.toString()); rewardedAd = null; } });
Kotlin
RewardedAd.load(this, "ca-app-pub-3940256099942544/5354046379", AdRequest.Builder().build(), object : RewardedAdLoadCallback() { override fun onAdLoaded(ad: RewardedAd) { Log.d(TAG, "Ad was loaded.") rewardedInterstitialAd = ad val options = ServerSideVerificationOptions.Builder() .setCustomData("SAMPLE_CUSTOM_DATA_STRING") .build() rewardedAd.setServerSideVerificationOptions(options) } override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, adError?.toString()) rewardedAd = null } })
カスタム リワード文字列を設定する場合は、広告を表示する前に行う必要があります。
FullScreenContentCallback を設定する
FullScreenContentCallback
は、RewardedAd
の表示に関連するイベントを処理します。RewardedAd
を表示する前に、コールバックを以下のように設定してください。
Java
rewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() { @Override public void onAdClicked() { // Called when a click is recorded for an ad. Log.d(TAG, "Ad was clicked."); } @Override public void onAdDismissedFullScreenContent() { // Called when ad is dismissed. // Set the ad reference to null so you don't show the ad a second time. Log.d(TAG, "Ad dismissed fullscreen content."); rewardedAd = null; } @Override public void onAdFailedToShowFullScreenContent(AdError adError) { // Called when ad fails to show. Log.e(TAG, "Ad failed to show fullscreen content."); rewardedAd = null; } @Override public void onAdImpression() { // Called when an impression is recorded for an ad. Log.d(TAG, "Ad recorded an impression."); } @Override public void onAdShowedFullScreenContent() { // Called when ad is shown. Log.d(TAG, "Ad showed fullscreen content."); } });
Kotlin
rewardedAd?.fullScreenContentCallback = object: FullScreenContentCallback() { override fun onAdClicked() { // Called when a click is recorded for an ad. Log.d(TAG, "Ad was clicked.") } override fun onAdDismissedFullScreenContent() { // Called when ad is dismissed. // Set the ad reference to null so you don't show the ad a second time. Log.d(TAG, "Ad dismissed fullscreen content.") rewardedAd = null } override fun onAdFailedToShowFullScreenContent(adError: AdError?) { // Called when ad fails to show. Log.e(TAG, "Ad failed to show fullscreen content.") rewardedAd = null } override fun onAdImpression() { // Called when an impression is recorded for an ad. Log.d(TAG, "Ad recorded an impression.") } override fun onAdShowedFullScreenContent() { // Called when ad is shown. Log.d(TAG, "Ad showed fullscreen content.") } }
広告を表示する
リワード広告を表示する際には、OnUserEarnedRewardListener
オブジェクトを使用して報酬イベントを処理します。
Java
if (rewardedAd != null) { Activity activityContext = MainActivity.this; rewardedAd.show(activityContext, new OnUserEarnedRewardListener() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { // Handle the reward. Log.d(TAG, "The user earned the reward."); int rewardAmount = rewardItem.getAmount(); String rewardType = rewardItem.getType(); } }); } else { Log.d(TAG, "The rewarded ad wasn't ready yet."); }
Kotlin
rewardedAd?.let { ad -> ad.show(this, OnUserEarnedRewardListener { rewardItem -> // Handle the reward. val rewardAmount = rewardItem.amount val rewardType = rewardItem.type Log.d(TAG, "User earned the reward.") }) } ?: run { Log.d(TAG, "The rewarded ad wasn't ready yet.") }
よくある質問
- 初期化の呼び出しでタイムアウトは発生しますか?
- 10 秒が経過すると、メディエーション ネットワークの初期化が完了していなくても、Google Mobile Ads SDK は
OnInitializationCompleteListener
を呼び出します。 - 初期化コールバックを取得したときに対応準備が完了していないメディエーション ネットワークはどうなりますか?
広告は、
OnInitializationCompleteListener
のコールバック内で読み込むことをおすすめします。メディエーション ネットワークの対応準備が完了していなくても、Google Mobile Ads SDK はそのネットワークに対して広告を要求します。そのため、いったんタイムアウトされても、その後に初期化が完了すれば、メディエーション ネットワークはそのセッション中に発生する後続の広告リクエストに対応することができます。MobileAds.getInitializationStatus()
を呼び出して、アプリ セッション全体を通じてすべてのアダプタの初期化ステータスを継続的にポーリングすることができます。- 特定のメディエーション ネットワークの対応準備が完了していない理由を確認するには、どうすればよいですか?
AdapterStatus.getDescription()
は、アダプタが広告リクエストの処理に対応できない理由を示しています。onUserEarnedReward()
コールバックは常にonAdDismissedFullScreenContent()
コールバックの前に呼び出されますか?Google 広告では、すべての
onUserEarnedReward()
呼び出しはonAdDismissedFullScreenContent()
の前に行われます。メディエーションを通じて配信される広告の場合、サードパーティの広告ネットワーク SDK の実装によってコールバックの順序が決まります。リワード情報を含む単一のクローズ コールバックを提供する広告ネットワーク SDK の場合、メディエーション アダプタは、onAdDismissedFullScreenContent()
の前にonUserEarnedReward()
を呼び出します。
GitHub の例
次のステップ
詳しくは、ユーザーのプライバシーについての記事をご覧ください。