Награжден

Выберите платформу: Android (бета-версия)Новый Android iOS Unity Flutter

Реклама с вознаграждением — это реклама, с которой пользователи могут взаимодействовать в обмен на внутриигровые награды . В этом руководстве показано, как интегрировать рекламу с вознаграждением от AdMob в приложение Flutter.

Всегда проводите тестирование с помощью тестовых объявлений.

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

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

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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

Загрузить рекламу

В следующем примере загружается реклама с вознаграждением:

RewardedAd.load(
  adUnitId: "_adUnitId",
  request: const AdRequest(),
  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 .

[Необязательно] Проверка обратных вызовов серверной проверки (SSV)

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

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

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

Замените SAMPLE_CUSTOM_DATA_STRING на ваши пользовательские данные.

Полный пример на GitHub

Награжден