Как добавить рекламу в Android приложение?
Я недавно начал учить Java и решил попробовать разрабатывать программы под Андроид.
Одна из моих первых бесплатных программ внезапно попала в топ и получила много хороших отзывов. В день происходит по 100 — 200 установок и почти нет удалений.
Я решил — ну раз пошла такая пьянка, может мне это как то монетизировать.
Но вот беда — не могу нагуглить ясную и актуальную инструкцию как в Android Studio добавить блок рекламы от гугла.
Пожалуйста ткните меня носом в нужное место документации на русском.
- Вопрос задан более трёх лет назад
- 7273 просмотра
3 комментария
Простой 3 комментария
Добавляем рекламу в мобильное приложение. AdMob для начинающих
Политика монетизации — одна из самых важных составляющих мобильного приложения. Доходит и до того, что разработчики сначала продумывают маркетинговую схему, а уже потом натягивают на нее геймплей. Сейчас существует множество проверенных способов повысить ARPU (Average Revenue Per User) своей игры: лутбоксы, батлпасы, прямые продажы апгрейдов или косметических предметов. В этой статье мы рассмотрим самый простой, старый, но от этого не менее эффективный способ получения прибыли с мобильного приложения — внутриигровая реклама, а так же поговорим о том, как внедрить ее в Unity на примере Google AdMob.
Что выбрать новичку? Unity Ads vs AdMob
Unity Ads и AdMob (Google) — два самых известных рекламных сервиса на рынке. По каждому существует тонна ресурсов в интернете, но с кем же из них сделать первый шаг?
Если вы читали название статьи (а вы его читали), вам должно быть очевидно, на кого пал мой выбор. Есть несколько причин, по которым я советую вам выбрать решение от Google:
- У данного сервиса выше показатели CPC(cost-per-click);
- Опыт работы со сторонним API;
- Думаю, что вам все равно придется заводить AdMob-аккаунт, так почему бы не сделать это сейчас;
Подключаем AdMob
На YouTube есть много материала по теме подключения сервиса. Лично я использовал этот ролик, а также официальную документацию. Ниже приведу пошаговую инструкцию в формате текста с картинками.
Пошагово установка выглядит так:
- Регистрируемся в AdMob
- Создаем проект и настраиваем блоки (речь о каждом из блоков пойдет ниже)
- Скачиваем с гитхаба официальный плагин
- Импортируем в Unity (Assets — Import Package)
- Прописываем в Assets — Google Mobile Ads — Settings ID своего приложения. Оно лежит на странице приложения в AdMob: Настройки приложения — Идентификатор приложения

- Инициализируем рекламу
using GoogleMobileAds.Api; public class AdInitialize : MonoBehaviour < private void Awake() < MobileAds.Initialize(initStatus =>< >); > >
- Создаем классы необходимых рекламных блоков (рассмотрим ниже).
Рекламные блоки
Теперь обсудим, какие виды рекламных блоков нам предоставляет AdMob. Для того, чтобы создать блок, первым делом вы должны выбрать его тип. На сайте нас встречает вот такой список:

Ниже мы рассмотрим каждый вариант, в документации также есть необходимый код (меню Ad Formats слева).
ВАЖНО: В скриптах ниже вместо ID своих блоков на этапе тестирования нужно использовать тестовые ID, лежащие тут. Иначе ваше приложение забанят. В моем коде везде используются тестовые ID.
Баннер
Прямоугольный блок, который будет постоянно висеть на экране. Может обновляться автоматически. Частоту обновлений можно прописать вручную (Расширенные настройки — Автоматическое обновление — Специальный). Для вызова используем класс BannerView. В конструкторе указывается размер и положение на экране (в формате перечисления). Отрисовывается автоматически при загрузке сцены.
using GoogleMobileAds.Api; public class BannerAd : MonoBehaviour < private BannerView _bannerAd; private const string _bannerId = "ca-app-pub-3940256099942544/6300978111"; private void OnEnable() < _bannerAd = new BannerView(_bannerId, AdSize.Banner, AdPosition.Top); AdRequest adRequest = new AdRequest.Builder().Build(); _bannerAd.LoadAd(adRequest); >public void ShowAd() < _bannerAd.Show(); >>

Межстраничное объявление
Стандартная реклама полноэкранного формата. Вызывается методом Show(). Во время показа ставит игру на паузу.
using GoogleMobileAds.Api; public class InterAd : MonoBehaviour < private InterstitialAd _interAd; private const string _interstitialId = "ca-app-pub-3940256099942544/8691691433"; private void OnEnable() < _interAd = new InterstitialAd(_interstitialId); AdRequest adRequest = new AdRequest.Builder().Build(); _interAd.LoadAd(adRequest); >public void ShowAd() < if (_interAd.IsLoaded()) < _interAd.Show(); >> >

Межстраничное объявление с вознаграждением
Реклама предыдущего формата с единственным отличием — после просмотра обратным вызовом можно начислить пользователю награду.
public class RewardedInterAD : MonoBehaviour < private RewardedInterstitialAd _rewardAd; private const string _interstitialId = "ca-app-pub-3940256099942544/5354046379"; private void OnEnable() < AdRequest adRequest = new AdRequest.Builder().Build(); RewardedInterstitialAd.LoadAd(_interstitialId, adRequest, adLoadCallback); >private void adLoadCallback(RewardedInterstitialAd ad, AdFailedToLoadEventArgs error) < if (error == null) < _rewardAd = ad; >> public void ShowAd() < if (_rewardAd != null) < _rewardAd.Show(userEarnedRewardCallback); >> private void userEarnedRewardCallback(Reward reward) < // Начисляем награду >>

С вознаграждением
Практически предыдущий вариант, только пользователи должны согласиться на просмотр.
public class RewardAd : MonoBehaviour < private RewardedAd _rewardAd; private const string _adId = "ca-app-pub-3940256099942544/5224354917"; private void OnEnable() < _rewardAd = new RewardedAd(_adId); AdRequest adRequest = new AdRequest.Builder().Build(); _rewardAd.LoadAd(adRequest); _rewardAd.OnUserEarnedReward += HandleUserEarnedReward; >public void ShowAd() < if (_rewardAd.IsLoaded()) < _rewardAd.Show(); >> private void HandleUserEarnedReward(object sender, Reward args) < // Начисляем награду >>
Расширенное нативное
Реклама, встраиваемая прямо в игровую сцену. По кусочкам собираем рекламу используя различные Get-методы. Советую посмотреть гайд на YouTube для быстрого понимания процесса встраивания и прочитать API здесь.
Итоговый результат выглядит так:

Запуск приложения
Реклама, появляющаяся перед запуском приложения. Приложение будет запускаться параллельно, так что этот формат можно использовать вместо экрана загрузки тяжеловесной сцены. Весь код берем с этой страницы.
Итоговый результат выглядит так:
public class AppOpenAdManager < private const string AD_UNIT_ID = "ca-app-pub-3940256099942544/3419835294"; private static AppOpenAdManager instance; private AppOpenAd ad; private bool isShowingAd = false; public static AppOpenAdManager Instance < get < if (instance == null) < instance = new AppOpenAdManager(); >return instance; > > private bool IsAdAvailable < get < return ad != null; >> public void LoadAd() < AdRequest request = new AdRequest.Builder().Build(); // Load an app open ad for portrait orientation AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>< if (error != null) < // Handle the error. Debug.LogFormat("Failed to load the ad. (reason: )", error.LoadAdError.GetMessage()); return; > // App open ad is loaded. ad = appOpenAd; >)); > public void ShowAdIfAvailable() < if (!IsAdAvailable || isShowingAd) < return; >ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent; ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent; ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent; ad.OnAdDidRecordImpression += HandleAdDidRecordImpression; ad.OnPaidEvent += HandlePaidEvent; ad.Show(); > private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args) < Debug.Log("Closed app open ad"); // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show. ad = null; isShowingAd = false; LoadAd(); >private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args) < Debug.LogFormat("Failed to present the ad (reason: )", args.AdError.GetMessage()); // Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show. ad = null; LoadAd(); > private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args) < Debug.Log("Displayed app open ad"); isShowingAd = true; >private void HandleAdDidRecordImpression(object sender, EventArgs args) < Debug.Log("Recorded ad impression"); >private void HandlePaidEvent(object sender, AdValueEventArgs args) < Debug.LogFormat("Received paid event. (currency: , value: ", args.AdValue.CurrencyCode, args.AdValue.Value); > >

Послесловие
В реальности мир не делится на Unity Ads и AdMob, а подходить к выбору сети нужно, исходя из вашей целевой аудитории. Расширить кругозор по поводу существующих вариантов можно, прочитав эту статью. Также обычно никто не использует один сервис, когда существует медиация — автоматический выбор решения, которое заплатит больше в конкретной ситуации. По традиции отсылаю вас на отдельный источник, если заинтересовала данная тема.
Желаю творческих и коммерческих успехов!
Как подключить рекламу к Android Studio

Я хочу подключить к программе рекламу, но видеоролик по которому я учусь это делать довольно старый, потому Android studio поменялся Где я теперь могу найти эту вкладку?
Отслеживать
задан 24 фев 2020 в 18:11
13 2 2 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Нету в студии таких вкладок больше (хотя я и не искал, может где-то и есть).
Всё добавляется ручками в пару секунд.
В build.gradle добавьте в dependences зависимость:
implementation 'com.google.android.gms:play-services-ads:18.3.0'
В манифест добавьте AdMob App ID:
В активности инициализируйте адмоб:
MobileAds.initialize(this, new OnInitializationCompleteListener() < @Override public void onInitializationComplete(InitializationStatus initializationStatus) < >>);
Готово! Реклама подключена к проекту.
Далее можете использовать и вставлять баннеры и межстраничные объявления в нужных вам местах.
Самый простой вариант вставки баннера, прямо в разметку:
А далее загрузите рекламу в этот баннер:
AdView mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);
И ура — вы показали свою первую рекламу в приложении ))
Firebase в android: Admob, или как добавить рекламный баннер в андроид-приложение
Продолжаем рассматривать работу с сервисами Firebase в Android Studio. Сегодня я покажу вам, как при помощи Firebase стало просто установить рекламный баннер в ваше приложение.
Создаем проект, выбираем шаблон Empty Activity, как обычно. В меню Tools открываем вкладку Firebase. В самом низу списка выбираем пункт Admob и жмем ссылку добавления баннера в приложение.
Открывается пошаговая инструкция, для начала нужно подключить проект к сервису Firebase. Если вы уже зарегистрированы на сайте Firebase, то достаточно только нажать кнопку в шаге 1. В противном случае вас перекинет в окно браузера для регистрации, подробнее об этом смотрите в прошлом уроке по работе с Firebase. Кнопка изменилась на надпись “Connected” – проект успешно присоединен. Следующий шаг – добавить нужные библиотеки в проект. Это также делается одним нажатием кнопки в шаге 2.

В открывшемся окне подтверждаем добавление зависимостей в файл сборки проекта. после синхронизации Gradle переходим к шагу 3.
Здесь немного сложнее – нам нужно сделать некоторые изменения макета главного экрана. Во первых, скопируем директиву добавления пространства имен ads и вставим ее в корневой RelativeLayout в файле компоновки activity_main.xml. Далее копируем и вставляем в макет виджет AdView, который и будет отображать рекламу. У нас покраснела ссылка на строковый ресурс, который должен хранить идентификатор рекламного баннера, поскольку в проекте такая строка отсутствует в файле strings.xml. Идентификатор баннера имеет вид, как указано в шаге 5 этого руководства.
. идентификатор вашего баннера
Мы его можем добавить, поставив курсор на ошибку и нажав красную лампочку слева. откроется окно добавления строкового ресурса. В поле Resource value нужно вставить идентификатор рекламного баннера.

Чтобы получить такой идентификатор, нужно создать рекламный баннер в гугловском сервисе Admob, для этого нужно зарегистрироваться по ссылке.
Процесс регистрации в сервисе Admob и создания баннера я здесь описывать не буду, в сети есть туториалы, есть справка Google. Кроме того, мы этот процесс подробно рассматриваем в Продвинутых курсах, записаться на которые можно на нашем сайте fandroid.info, ссылки есть в главном меню.
Если у вас в данный момент нет идентификатора баннера, можете оставить поле пустым, строковый ресурс будет создан, и ошибка исчезнет. Конечно, реклама не будет отображаться, но для данного тестового примера это не важно, и позже вы поймете, почему. У вас в любом случае будет возможность проверить работоспособность этого приложения. Итак, у меня строка с id баннера добавлена, переходим к следующему шагу.
Теперь нужно дописать метод отображения баннера в классе MainActivity.java, для этого скопируем код шага 4.
import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; // . public class MainActivity extends AppCompatActivity < private AdView mAdView; // . @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAdView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);
Объявим переменную класса AdView. Внимательно проверяйте импорты. Затем копируем такой фрагмент кода в метод oncreate. Здесь мы находим виджет баннера в макете по идентификатору. Затем создаем объект класса AdRequest, который содержит таргетированную информацию, используемую для получения объявления. Рекламные запросы создаются с помощью AdRequest.Builder. Метод loadAd получает объект adRequest и начинает загрузку баннера.
Последний метод подчеркнут красным – при наведении курсора на ошибку среда разработки подсказывает, что отсутствует разрешение для доступа к интернету в манифесте приложения. Нажмем на красную лампочку и выберем команду добавления разрешения в манифест. В результате в манифесте должна появится такая строка:
И переходим к шагу 5, где указано, что мы должны добавить строку с идентификатором рекламного баннера в файл strings.xml, но мы это уже сделали, когда меняли код макета. Осталось запустить приложение на устройстве или эмуляторе и проверить, как оно работает. Приложение стартует, баннер показывает рекламу.

Предупреждаю вас, не кликайте по своим баннерам в приложении – вас могут забанить навсегда в сервисе adMob, и вы не сможете больше сотрудничать с Google в сфере заработка на рекламе.
Чтобы избежать нежелательных кликов, необходимо добавить в билдер вызов метода addTestDevice, который определяет устройство для тестирования, на котором будет отображен не настоящий рекламный баннер, а тестовый. В качестве параметра этому методу надо передать идентификатор устройства. Найти его очень просто. Запускаем приложение на реальном устройстве и идем в Android Monitor. Фильтруем записи по тегу Ads. И находим рекомендацию, которая содержит готовую конструкцию – метод addTestDevice с идентификатором устройства.

Нам остается только скопировать метод с идентификатором устройства в качестве параметра и вставить его в код. Если вы тестируете приложение на эмуляторе, то нужно добавить тот же метод, но уже с другим параметром – константой AdRequest.DEVICE_ID_EMULATOR. В результате на устройстве с таким идентификатором, а также на всех эмуляторах будет отображен специальный тестовый баннер. Причем тестовый баннер будет отображен и у тех, кто в третьем шаге создал пустой строковый ресурс без идентификатора рекламного баннера. По тестовому баннеру можно кликать абсолютно безнаказанно, при этом будет открываться раздел Google Ads на официальном сайте разработчиков.

И еще один момент. Виджет баннера должен корректно работать при разном поведении приложения на устройстве. Для этого нужно синхронизировать его с соответствующими методами жизненного цикла Activity. В методе onResume(), который вызывается в момент, когда Activity появляется на экране и готово к взаимодействию с пользователем, мы вызываем метод resume() у виджета AdView. Когда Activity приостанавливает работу вызывается метод onPause(), здесь вызываем метод pause() у виджета. И в методе onDestroy(), который срабатывает при уничтожении Activity, также уничтожаем Adview методом destroy().
Полный код класса MainActivity.java:
package info.fandroid.admobtest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; public class MainActivity extends AppCompatActivity < private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAdView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder() .addTestDevice("идентификатор вашего устройства") .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .build(); mAdView.loadAd(adRequest); >@Override protected void onResume() < super.onResume(); mAdView.resume(); >@Override protected void onPause() < mAdView.pause(); super.onPause(); >@Override protected void onDestroy() < mAdView.destroy(); super.onDestroy(); >>
На этом наш урок закончен. Более подробно мы рассматриваем работу с рекламными баннерами в Продвинутых курсах, подписаться на которые можно на нашем сайте fandroid.info. А если вы хотите научиться работать с рекламными баннерами других форматов, таких как межстраничные баннеры в приложении – подписывайтесь на продвинутый курс по созданию приложения для канала Youtube. В процессе курса вы сможете создать полноценное приложение для вашего youtube канала, загрузить его в маркет Google Play и встроить в него 2 вида рекламных баннеров – стандартный и межстраничный, или interstitial.
