リワード

リワード広告は、ユーザーが広告を操作することと引き換えにアプリ内で報酬を獲得できる広告です。このガイドでは、AdMob のリワード広告を Flutter アプリに統合する方法を説明します。

常にテスト広告でテストする

アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告でテストすると、アカウントが停止される場合があります。

下記のリワード広告向けのテスト専用広告ユニット ID を使うと、テスト広告を簡単に読み込むことができます。

テスト広告ユニットはすべてのリクエストに対してテスト広告を返す特別な広告ユニットで、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、この広告ユニットの ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。

広告を読み込む

RewardedAd を読み込むには、adUnitIdAdRequestRewardedAdLoadCallback が必要です。次のサンプルでは、リワード広告を読み込んでいます。

RewardedAd.load(
  adUnitId: '<test id or account id>',
  request: AdRequest(),
  rewardedAdLoadCallback: RewardedAdLoadCallback(
    onAdLoaded: (RewardedAd ad) {
      print('$ad loaded.');
      // Keep a reference to the ad so you can show it later.
      this._rewardedAd = ad;
    },
    onAdFailedToLoad: (LoadAdError error) {
      print('RewardedAd failed to load: $error');
    },
);

リワード広告イベント

FullScreenContentCallback を使用すると、広告が表示されたときや非表示にされたときなどのライフサイクル イベントをリッスンできます。これらのイベントの通知を受け取るには、広告を表示する前に RewardedAd.fullScreenContentCallback を設定します。以下のサンプルでは、各メソッドを実装して、コンソールにログとしてメッセージを出力しています。

rewardedAd.fullScreenContentCallback = FullScreenContentCallback(
  onAdShowedFullScreenContent: (RewardedAd ad) =>
     print('$ad onAdShowedFullScreenContent.'),
  onAdDismissedFullScreenContent: (RewardedAd ad) {
    print('$ad onAdDismissedFullScreenContent.');
    ad.dispose();
  },
  onAdFailedToShowFullScreenContent: (RewardedAd ad, AdError error) {
    print('$ad onAdFailedToShowFullScreenContent: $error');
    ad.dispose();
  },
  onAdImpression: (RewardedAd ad) => print('$ad impression occurred.'),
);

広告を表示する

RewardedAd はすべてのアプリ コンテンツ上にオーバーレイとして表示され、静的に配置されます。ですから、Flutter ウィジェット ツリーに追加することはできません。show() を呼び出すことで、広告を追加するタイミングを選択できます。RewardedAd.show() は、ユーザーが特典を獲得したときに呼び出される OnUserEarnedRewardCallback を取得します。必ずこれを実装して、広告を視聴したユーザーに報酬が与えられるようにしてください。

myRewarded.show(onUserEarnedReward: (RewardedAd ad, RewardItem rewardItem) {
  // Reward the user for watching an ad.
});

show() が呼び出されると、この方法で表示された Ad をプログラムで削除することはできないため、ユーザー入力が必要になります。RewardedAd は 1 度しか表示できません。後続の表示の呼び出しで onAdFailedToShowFullScreenContent がトリガーされます。

広告で load() が呼び出されたら、load() へのアクセスが不要になった際に dispose() を呼び出す必要があります。dispose() を呼び出すおすすめのタイミングは、FullScreenContentCallback.onAdDismissedFullScreenContent および FullScreenContentCallback.onAdFailedToShowFullScreenContent のコールバック時です。

このガイドの説明は以上です。これで、アプリにリワード広告を表示できるようになりました。