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

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

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

Предварительные требования

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

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

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

    /21775744923/example/rewarded

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

    Подробную информацию о тестовой рекламе в GMA Next-Gen SDK см. в разделе «Включить тестовую рекламу» .

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

    Для загрузки рекламы GMA Next-Gen SDK предлагает следующее:

    Загрузка с использованием API для загрузки отдельных объявлений.

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

    Котлин

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback
    import com.google.android.libraries.ads.mobile.sdk.MobileAds
    
    class RewardedActivity : Activity() {
      private var rewardedAd: RewardedAd? = null
    
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        // Load ads after you inititalize GMA Next-Gen SDK.
        RewardedAd.load(
          AdRequest.Builder(AD_UNIT_ID).build(),
          object : AdLoadCallback<RewardedAd> {
            override fun onAdLoaded(ad: RewardedAd) {
              // Rewarded ad loaded.
              rewardedAd = ad
            }
    
            override fun onAdFailedToLoad(adError: LoadAdError) {
              // Rewarded ad failed to load.
              rewardedAd = null
            }
          },
        )
      }
    
      companion object {
        // Sample rewarded ad unit ID.
        const val AD_UNIT_ID = "/21775744923/example/rewarded"
      }
    }
    

    Java

    import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
    import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
    import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
    import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd;
    import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback;
    import com.google.android.libraries.ads.mobile.sdk.MobileAds;
    
    class RewardedActivity extends Activity {
      // Sample rewarded ad unit ID.
      private static final String AD_UNIT_ID = "/21775744923/example/rewarded";
      private RewardedAd rewardedAd;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        // Load ads after you initialize GMA Next-Gen SDK.
        RewardedAd.load(
            new AdRequest.Builder(AD_UNIT_ID).build(),
            new AdLoadCallback<RewardedAd>() {
              @Override
              public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
                // Rewarded ad loaded.
                AdLoadCallback.super.onAdLoaded(rewardedAd);
                RewardedActivity.this.rewardedAd = rewardedAd;
              }
    
              @Override
              public void onAdFailedToLoad(@NonNull LoadAdError adError) {
                // Rewarded ad failed to load.
                AdLoadCallback.super.onAdFailedToLoad(adError);
                rewardedAd = null;
              }
            }
        );
      }
    }
    

    Загрузка с использованием API предварительной загрузки рекламы.

    Для начала предварительной загрузки выполните следующие действия:

    1. Инициализируйте конфигурацию предварительной загрузки с помощью запроса на показ рекламы.

    2. Запустите предварительную загрузку для рекламы с вознаграждением, используя идентификатор вашего рекламного блока и конфигурацию предварительной загрузки:

    Котлин

    private fun startPreloading(adUnitId: String) {
      val adRequest = AdRequest.Builder(adUnitId).build()
      val preloadConfig = PreloadConfiguration(adRequest)
      RewardedAdPreloader.start(adUnitId, preloadConfig)
    }
    
    

    Java

    private void startPreloading(String adUnitId) {
      AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
      PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
      RewardedAdPreloader.start(adUnitId, preloadConfig);
    }
    
    

    Когда будете готовы показать рекламу, запросите её отображение в загрузочном окне:

    Котлин

    // Polling returns the next available ad and loads another ad in the background.
    val ad = RewardedAdPreloader.pollAd(adUnitId)
    

    Java

    // Polling returns the next available ad and loads another ad in the background.
    final RewardedAd ad = RewardedAdPreloader.pollAd(adUnitId);
    

    Настройте функцию обратного вызова RewardedAdEventCallback.

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

    Котлин

    // Listen for ad events.
    rewardedAd?.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.
          rewardedAd = null
        }
    
        override fun onAdImpression() {
          // Rewarded ad did record an impression.
        }
    
        override fun onAdClicked() {
          // Rewarded ad did record a click.
        }
      }
    

    Java

    // Listen for ad events.
    rewardedAd.setAdEventCallback(
        new RewardedAdEventCallback() {
          @Override
          public void onAdShowedFullScreenContent() {
            // Rewarded ad did show.
            RewardedAdEventCallback.super.onAdShowedFullScreenContent();
          }
    
          @Override
          public void onAdDismissedFullScreenContent() {
            // Rewarded ad did dismiss.
            RewardedAdEventCallback.super.onAdDismissedFullScreenContent();
            rewardedAd = null;
          }
    
          @Override
          public void onAdFailedToShowFullScreenContent(
              @NonNull FullScreenContentError fullScreenContentError) {
            // Rewarded ad failed to show.
            RewardedAdEventCallback.super.onAdFailedToShowFullScreenContent(
                fullScreenContentError);
            rewardedAd = null;
          }
    
          @Override
          public void onAdImpression() {
            // Rewarded ad did record an impression.
            RewardedAdEventCallback.super.onAdImpression();
          }
    
          @Override
          public void onAdClicked() {
            // Rewarded ad did record a click.
            RewardedAdEventCallback.super.onAdClicked();
          }
        }
    );
    

    Показать рекламу

    Для показа рекламы с вознаграждением используйте метод show() . Для обработки событий вознаграждения используйте объект OnUserEarnedRewardListener .

    Котлин

    // Show the ad.
    rewardedAd?.show(
      this@RewardedActivity,
      object : OnUserEarnedRewardListener {
        override fun onUserEarnedReward(rewardItem: RewardItem) {
          // User earned the reward.
          val rewardAmount = rewardItem.amount
          val rewardType = rewardItem.type
        }
      },
    )
    

    Java

    // Show the ad.
    rewardedAd.show(
        RewardedActivity.this,
        new OnUserEarnedRewardListener() {
          @Override
          public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
            // User earned the reward.
            int rewardAmount = rewardItem.getAmount();
            String rewardType = rewardItem.getType();
        }
    });
    

    Часто задаваемые вопросы

    Предусмотрен ли тайм-аут для вызова инициализации?
    Через 10 секунд GMA Next-Gen SDK вызывает OnInitializationCompleteListener , даже если инициализация сети посредничества еще не завершена.
    Что произойдет, если некоторые сети-посредники окажутся не готовы к моменту получения обратного вызова инициализации?

    Мы рекомендуем загружать рекламу внутри функции обратного вызова OnInitializationCompleteListener . Даже если сеть посредничества не готова, GMA Next-Gen SDK все равно запросит у нее рекламу. Таким образом, если сеть посредничества завершит инициализацию после истечения таймаута, она все равно сможет обрабатывать будущие запросы на рекламу в этой сессии.

    Вы можете продолжать опрашивать статус инициализации всех адаптеров на протяжении всей сессии вашего приложения, вызывая метод MobileAds.getInitializationStatus() .

    Как мне узнать, почему конкретная сеть медиации не готова?

    AdapterStatus.getDescription() описывает причину, по которой адаптер не готов обрабатывать рекламные запросы.

    Всегда ли функция обратного вызова onUserEarnedReward() вызывается до функции обратного вызова onAdDismissedFullScreenContent() ?

    Для рекламы Google все вызовы onUserEarnedReward() происходят до onAdDismissedFullScreenContent() . Для рекламы, показываемой через медиацию , порядок обратных вызовов определяется реализацией SDK рекламной сети стороннего разработчика. Для SDK рекламных сетей, которые предоставляют один обратный вызов закрытия с информацией о вознаграждении, адаптер медиации вызывает onUserEarnedReward() перед onAdDismissedFullScreenContent() .

    Пример

    Загрузите и запустите пример приложения , демонстрирующий использование GMA Next-Gen SDK.