Межстраничное объявление с вознаграждением – это формат рекламы с поощрением, которая показывается при переходах внутри приложения и позволяет начислять пользователям бонусы за взаимодействие с ней. В отличие от обычных объявлений с вознаграждением для показа межстраничных объявлений с вознаграждением не требуется согласие пользователя. В этом руководстве рассказывается, как интегрировать межстраничные объявления с вознаграждением из AdMob в приложение Flutter.
Требования
Прежде чем продолжить, выполните следующие действия:
- Установите плагин Flutter 1.1.0 или более поздней версии.
- Настройте Google Mobile Ads Flutter Plugin. В приложении Flutter должен быть импортирован пакет Google Mobile Ads Flutter Plugin.
Всегда тестируйте с помощью тестовых объявлений
При создании и тестировании приложений используйте тестовые объявления, а не реальные. В противном случае ваш аккаунт может быть заблокирован.
Самый простой способ загрузить тестовые объявления – использовать специальный идентификатор рекламного блока для межстраничных объявлений с вознаграждением:
Android
ca-app-pub-3940256099942544/5354046379
iOS
ca-app-pub-3940256099942544/6978759866
Тестовые рекламные блоки настроены так, чтобы возвращать тестовые объявления для каждого запроса. Вы можете использовать их в своих приложениях при написании кода, тестировании и отладке. Только не забудьте заменить их на собственные идентификаторы рекламных блоков перед публикацией приложения.
Как загрузить объявление
В следующем примере показано, как загрузить межстраничное объявление с вознаграждением:
Вместо _adUnitId укажите идентификатор своего рекламного блока.
События межстраничных объявлений с вознаграждением
С помощью FullScreenContentCallback можно отслеживать события жизненного цикла, например показ или закрытие объявления. Чтобы получать уведомления об этих событиях, задайте значение RewardedInterstitialAd.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.');
},
);
Медийное объявление
RewardedInterstitialAd показывается в виде оверлея поверх всего контента приложения и статически размещается, поэтому его нельзя добавить в дерево виджетов Flutter.
Вы можете выбрать, когда показывать рекламу, вызвав метод show().
RewardedInterstitialAd.show() принимает OnUserEarnedRewardCallback, который вызывается, когда пользователь получает вознаграждение. Обязательно реализуйте эту функцию и вознаграждайте пользователей за просмотр рекламы.
_rewardedInterstitialAd?.show(
onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
debugPrint('Reward amount: ${rewardItem.amount}');
},
);
После вызова show() показанный таким образом Ad нельзя удалить программно, и для этого требуется ввод данных пользователем. RewardedInterstitialAd можно показать только один раз. Последующие вызовы show будут запускать onAdFailedToShowFullScreenContent.
Объявление необходимо удалить, когда оно больше не нужно. Рекомендуется вызывать функцию dispose() в обратных вызовах FullScreenContentCallback.onAdDismissedFullScreenContent и FullScreenContentCallback.onAdFailedToShowFullScreenContent.
[Необязательно] Проверка обратных вызовов проверки на стороне сервера
Приложения, которым требуются дополнительные данные в обратных вызовах проверки на стороне сервера, должны использовать функцию специальных данных в объявлениях с вознаграждением. Любое строковое значение, заданное для объекта объявления с вознаграждением, передается в параметр запроса custom_data обратного вызова SSV. Если значение специальных данных не задано, значение параметра запроса custom_data не будет присутствовать в обратном вызове SSV.
В приведенном ниже фрагменте кода показано, как задать параметры SSV после загрузки межстраничного объявления с вознаграждением:
Замените SAMPLE_CUSTOM_DATA_STRING собственными данными.
Полный пример на GitHub
Полный пример можно посмотреть в демоверсии API.