Реклама при открытии приложения
Примечание
Пример работы всех типов форматов есть в демопроекте.
Пример создания рекламы при открытии приложения
-
Инициализируйте SDK на старте работы приложения.
KotlinJavaYandexAds.initialize(this) { // Now you can use ads }YandexAds.initialize(this, () -> { // Now you can use ads }); -
Создайте и сконфигурируйте объект загрузки рекламы
AppOpenAdLoader.Потребуется идентификатор рекламного места, полученный вами в интерфейсе Рекламной сети Яндекса (
AD_UNIT_ID).Расширить параметры запроса за рекламой можно через
AdRequest.Builder(), передав в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы.KotlinJavaval appOpenAdLoader: AppOpenAdLoader = AppOpenAdLoader(application) val AD_UNIT_ID = "R-M-XXXXXX-Y" // для отладки можно использовать "demo-appopenad-yandex" val adRequest = AdRequest.Builder(AD_UNIT_ID).build()final AppOpenAdLoader appOpenAdLoader = AppOpenAdLoader(application); final String AD_UNIT_ID = "R-M-XXXXXX-Y"; // для отладки можно использовать "demo-appopenad-yandex" final AdRequest adRequest = new AdRequest.Builder(AD_UNIT_ID).build(); -
Установите слушатель методов обратного вызова
AppOpenAdLoadListenerдля уведомления об успешной или неудачной загрузке рекламы.KotlinJavaval appOpenAdLoadListener = object : AppOpenAdLoadListener { override fun onAdLoaded(appOpenAd: AppOpenAd) { // The ad was loaded successfully. Now you can show loaded ad. this@Activity.appOpenAd = appOpenAd } override fun onAdFailedToLoad(adRequestError: AdRequestError) { // Ad failed to load with AdRequestError. // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged. } }AppOpenAdLoadListener appOpenAdLoadListener = new AppOpenAdLoadListener() { @Override public void onAdLoaded(@NonNull final AppOpenAd appOpenAd) { // The ad was loaded successfully. Now you can show loaded ad. mAppOpenAd = appOpenAd; } @Override public void onAdFailedToLoad(@NonNull final AdRequestError adRequestError) { // Ad failed to load with AdRequestError. // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged. } }; -
Загрузите рекламное объявление используя метод
loadAd(AdRequest, AppOpenAdLoadListener).KotlinJavaprivate fun loadAppOpenAd() { appOpenAdLoader.loadAd(adRequest, appOpenAdLoadListener) }private void loadAppOpenAd() { appOpenAdLoader.loadAd(adRequest, appOpenAdLoadListener); } -
Используйте
LifecycleEventObserverдля обработки изменения состояния приложения и показа рекламы во время его открытия.KotlinJavaval processLifecycleObserver = DefaultProcessLifecycleObserver( onProcessCameForeground = ::showAppOpenAd ) ProcessLifecycleOwner.get().lifecycle.addObserver(processLifecycleObserver)final DefaultProcessLifecycleObserver processLifecycleObserver = new DefaultProcessLifecycleObserver() { @Override public void onProcessCameForeground() { showAppOpenAd(); } } ProcessLifecycleOwner.get().getLifecycle().addObserver(processLifecycleObserver); -
Перед показом объявления установите слушатель методов обратного вызова рекламного объявления
AppOpenAdEventListener.KotlinJavaprivate inner class AdEventListener : AppOpenAdEventListener { override fun onAdShown() { // Called when ad is shown. } override fun onAdFailedToShow(adError: AdError) { // Called when ad failed to show. } override fun onAdDismissed() { // Called when ad is dismissed. // Clean resources after dismiss and preload new ad. clearAppOpenAd() loadAppOpenAd() } override fun onAdClicked() { // Called when a click is recorded for an ad. } override fun onAdImpression(impressionData: ImpressionData?) { // Called when an impression is recorded for an ad. // Get Impression Level Revenue Data in argument. } } private val appOpenAdEventListener = AdEventListener() appOpenAd?.setAdEventListener(appOpenAdEventListener)AppOpenAdEventListener appOpenAdEventListener = new AppOpenAdEventListener() { @Override public void onAdShown() { // Called when ad is shown. } @Override public void onAdFailedToShow(@NonNull final AdError adError) { // Called when ad failed to show. } @Override public void onAdDismissed() { // Called when ad is dismissed. // Clean resources after dismiss and preload new ad. clearAppOpenAd(); loadAppOpenAd(); } @Override public void onAdClicked() { // Called when a click is recorded for an ad. } @Override public void onAdImpression(@Nullable final ImpressionData impressionData) { // Called when an impression is recorded for an ad. } }; if (mAppOpenAd != null) { mAppOpenAd.setAdEventListener(appOpenAdEventListener); } -
Покажите рекламу используя метод
show.KotlinJavaprivate fun showAppOpenAd() { appOpenAd?.show(activity) }private void showAppOpenAd() { if (mAppOpenAd != null) { mAppOpenAd.show(activity); } } -
Освободите ресурсы.
Это необходимо для предотвращения утечек памяти.
KotlinJavaprivate fun clearAppOpenAd() { appOpenAd?.setAdEventListener(null) appOpenAd = null }private void clearAppOpenAd() { if (mAppOpenAd != null) { mAppOpenAd.setAdEventListener(null); mAppOpenAd = null; } }
Проверка интеграции
Соберите и запустите проект. Успешную интеграцию SDK можно проверить в Logcat по ключевому слову YandexAds:
[Integration] Ad type App Open was integrated successfully