リワード広告

リワード広告 操作に応じてユーザーにアプリ内アイテムを進呈できる 動画広告、体験プレイ広告、アンケートなどです

前提条件

必ずテスト広告でテストする

アプリを作成、テストする際は、テスト広告ではなく、 配信します。実際の広告を使用すると、アカウントが停止される可能性があります。

テスト広告を読み込むには、専用のテスト広告ユニット ID を使用すると、 Android リワード広告:

/6499/example/rewarded

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

Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告の仕組みに関するページ 広告

リワード広告オブジェクトを読み込む

リワード広告は、静的な load() メソッドを RewardedAd クラスと RewardedAdLoadCallback を渡します。これは通常 ActivityonCreate() メソッド内で行います。 他の形式の読み込みコールバックと同様に、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) {
    AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
    RewardedAd.load(this, "/6499/example/rewarded",
      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 = AdManagerAdRequest.Builder().build()
    RewardedAd.load(this,"/6499/example/rewarded", 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
       }
    })
  }
}

FullScreenContentCallback を設定する

FullScreenContentCallback は、 RewardedAdRewardedAd を表示する前に、コールバックを設定してください 次のようになります。

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()。Google 広告を介して配信される広告については、 メディエーション、第三者広告 コールバックの順序はネットワーク SDK の実装によって決まります。広告ネットワーク 報酬情報とともに 1 回のクローズ コールバックを提供する SDK メディエーション アダプタが onUserEarnedReward()onAdDismissedFullScreenContent()

GitHub の例

次のステップ

次のトピックをご覧ください。