В этом руководстве рассказывается, как интегрировать объявления с вознаграждением в приложение для Android.
Подготовка
Прежде чем продолжить, сделайте следующее:
- Настройте GMA Next-Gen SDK.
- Используйте идентификатор тестового рекламного блока для объявлений с вознаграждением
ca-app-pub-3940256099942544/5224354917.- При создании и тестировании приложения используйте тестовые объявления, а не реальные. Если вы не будете использовать идентификатор тестового рекламного блока, Google может заблокировать ваш аккаунт.
- Перед публикацией приложения замените этот идентификатор на идентификатор своего рекламного блока.
- Подробнее о тестовых объявлениях GMA Next-Gen SDK рассказывается в статье Как включить тестовые объявления.
Загрузка объявления
В следующем примере загружается одно объявление:
Kotlin
// Load ads after you initialize MobileAds. RewardedAd.load( AdRequest.Builder(adUnitId).build(), object : AdLoadCallback<RewardedAd> { override fun onAdLoaded(ad: RewardedAd) { // Rewarded ad loaded. rewardedAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { // Rewarded ad failed to load. Log.e(TAG, "Rewarded ad failed to load: ${adError.message}") rewardedAd = null } }, )
Java
// Load ads after you initialize MobileAds. RewardedAd.load( new AdRequest.Builder(adUnitId).build(), new AdLoadCallback<RewardedAd>() { @Override public void onAdLoaded(@NonNull RewardedAd ad) { // Rewarded ad loaded. rewardedAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { // Rewarded ad failed to load. Log.e(TAG, "Rewarded ad failed to load: " + adError.getMessage()); rewardedAd = null; } });
При тестировании используйте идентификатор тестового рекламного блока:
ca-app-pub-3940256099942544/5224354917.
Покажите объявление
Чтобы показать объявление с вознаграждением, вызовите методshow. Для обработки событий получения вознаграждения используйте объект OnUserEarnedRewardListener.
В примере ниже показано объявление:
Kotlin
private fun showAd(rewardedAd: RewardedAd, activity: Activity) { // Show the ad. rewardedAd.show( activity, object : OnUserEarnedRewardListener { override fun onUserEarnedReward(rewardItem: RewardItem) { // User earned the reward. val rewardAmount = rewardItem.amount val rewardType = rewardItem.type } }, ) }
Java
private void showAd(RewardedAd rewardedAd, Activity activity) { // Show the ad. rewardedAd.show( activity, new OnUserEarnedRewardListener() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { // User earned the reward. int rewardAmount = rewardItem.getAmount(); String rewardType = rewardItem.getType(); } }); }
Как отслеживать события объявлений
Прежде чем показывать объявление, прослушайте события жизненного цикла объявления. В примере ниже регистрируются обратные вызовы для событий объявлений.
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = rewardedAd if (ad == null) { Log.e(TAG, "Rewarded ad is not ready yet.") return } ad.adEventCallback = object : RewardedAdEventCallback { override fun onAdShowedFullScreenContent() { // Rewarded ad did show. } override fun onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Rewarded ad did record an impression. } override fun onAdClicked() { // Rewarded ad did record a click. } } }
Java
private void listenToAdEvents() { // Listen for ad events. if (rewardedAd == null) { Log.e(TAG, "Rewarded ad is not ready yet."); return; } rewardedAd.setAdEventCallback( new RewardedAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Rewarded ad did show. } @Override public void onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null; } @Override public void onAdFailedToShowFullScreenContent( FullScreenContentError fullScreenContentError) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Rewarded ad did record an impression. } @Override public void onAdClicked() { // Rewarded ad did record a click. } }); }
Как проверить обратные вызовы при проверке на стороне сервера (необязательно)
Чтобы передавать контекст пользователя и приложения в обратных вызовах проверки на стороне сервера, задайте параметры проверки в объекте объявления перед его показом. Поскольку обратные вызовы для проверки на стороне сервера поступают на ваш сервер от Google без состояния сеанса, прикрепите следующие необязательные строки. Google пересылает эти строки без изменений в качестве подписанных параметров запроса в обратном вызове для проверки на стороне сервера:
- Параметр запроса
user_id. Позволяет идентифицировать пользователя, которому нужно начислить вознаграждение, например по идентификатору внутреннего аккаунта. - Параметр запроса
custom_data. Содержит данные приложения, например место размещения вознаграждения, уровень игры или одноразовый код, сгенерированный сервером.
Если вы не зададите значение, Google не включит этот параметр запроса в обратный вызов для проверки на стороне сервера.
В примере ниже показано, как задать собственные данные для объекта объявления перед его показом.
Kotlin
Java
Замените SAMPLE_CUSTOM_DATA_STRING своими данными.
Важно! Параметр запроса custom_data закодирован в процентах. Прежде чем анализировать значение, декодируйте URL строки на сервере и проверьте подпись обратного вызова, прежде чем доверять параметрам запроса user_id или custom_data.