Объявления с вознаграждением

Объявления с вознаграждением – это объявления, с которыми пользователи могут взаимодействовать в обмен на вознаграждения в приложении. В этом руководстве рассказывается, как интегрировать объявления с вознаграждением из Менеджера рекламы в приложение Flutter.

Всегда используйте тестовые объявления

При создании и тестировании приложений используйте тестовые объявления, а не реальные. В противном случае ваш аккаунт может быть заблокирован.

Проще всего загрузить тестовые объявления с помощью специального идентификатора тестового рекламного блока для объявлений с вознаграждением:

  • /21775744923/example/rewarded

Тестовые рекламные блоки настроены так, чтобы возвращать тестовые объявления по каждому запросу. Вы можете использовать их в своих приложениях при написании кода, тестировании и отладке. Перед публикацией приложения не забудьте заменить их на идентификаторы собственных рекламных блоков.

Загрузка объявления

В примере ниже загружается объявление с вознаграждением.

RewardedAd.load(
  adUnitId: "_adUnitId",
  request: const AdManagerAdRequest(),
  rewardedAdLoadCallback: RewardedAdLoadCallback(
    onAdLoaded: (RewardedAd ad) {
      // Called when an ad is successfully received.
      debugPrint('Ad was loaded.');
      // Keep a reference to the ad so you can show it later.
      _rewardedAd = ad;
    },
    onAdFailedToLoad: (LoadAdError error) {
      // Called when an ad request failed.
      debugPrint('Ad failed to load with error: $error');
    },
  ),
);

Замените _adUnitId идентификатором своего рекламного блока.

События объявлений с вознаграждением

С помощью FullScreenContentCallback можно отслеживать события жизненного цикла, например показ или закрытие объявления. Чтобы получать уведомления об этих событиях, задайте значение RewardedAd.fullScreenContentCallback перед показом объявления. В этом примере реализуется каждый метод и регистрируется сообщение в консоли:

ad.fullScreenContentCallback = FullScreenContentCallback(
  onAdShowedFullScreenContent: (ad) {
    // Called when the ad showed the full screen content.
    debugPrint('Ad showed full screen content.');
  },
  onAdFailedToShowFullScreenContent: (ad, err) {
    // Called when the ad failed to show full screen content.
    debugPrint('Ad failed to show full screen content with error: $err');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdDismissedFullScreenContent: (ad) {
    // Called when the ad dismissed full screen content.
    debugPrint('Ad was dismissed.');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdImpression: (ad) {
    // Called when an impression occurs on the ad.
    debugPrint('Ad recorded an impression.');
  },
  onAdClicked: (ad) {
    // Called when a click is recorded for an ad.
    debugPrint('Ad was clicked.');
  },
);

Медийное объявление

Объект RewardedAd показывается поверх всего контента приложения и размещается статически, поэтому его нельзя добавить в дерево виджетов Flutter. Вы можете выбрать, когда показывать объявление, вызвав метод show(). RewardedAd.show() принимает OnUserEarnedRewardCallback, который вызывается, когда пользователь получает вознаграждение. Обязательно реализуйте эту функцию и вознаграждайте пользователей за просмотр рекламы.

_rewardedAd?.show(
  onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
    debugPrint('Reward amount: ${rewardItem.amount}');
  },
);

После вызова show() Ad, показанный таким образом, нельзя удалить программно, и требуется действие пользователя. RewardedAd может быть показана только один раз. Последующие вызовы show будут активировать onAdFailedToShowFullScreenContent.

Объявление должно быть удалено, когда доступ к нему больше не требуется. Рекомендуется вызывать dispose() в обратных вызовах FullScreenContentCallback.onAdDismissedFullScreenContent и FullScreenContentCallback.onAdFailedToShowFullScreenContent.

Как проверить обратные вызовы при проверке на стороне сервера (необязательно)

Если приложению требуются дополнительные данные в обратных вызовах для проверки на стороне сервера, используйте функцию пользовательских данных в объявлениях с вознаграждением. Любое строковое значение, заданное в объекте объявления с вознаграждением, передается в параметр запроса custom_data обратного вызова для проверки на стороне сервера. Если значение не задано, параметр запроса custom_data не будет включен в обратный вызов для проверки на стороне сервера.

В приведенном ниже примере кода показано, как задать параметры проверки на стороне сервера после загрузки объявления с вознаграждением.

RewardedAd.load(
  adUnitId: "_adUnitId",
  request: AdManagerAdRequest(),
  rewardedAdLoadCallback: RewardedAdLoadCallback(
    onAdLoaded: (ad) {
      ServerSideVerificationOptions _options =
          ServerSideVerificationOptions(
            customData: 'SAMPLE_CUSTOM_DATA_STRING',
          );
      ad.setServerSideOptions(_options);
      _rewardedAd = ad;
    },
    onAdFailedToLoad: (error) {},
  ),
);

Замените SAMPLE_CUSTOM_DATA_STRING своими данными.