добавление admob рекламы в android приложение
Добавление рекламы AdMob в Android-приложение, созданное на Unity3D + решение проблемы некликабельности
Доброго времени суток, уважаемые Хабровчане, я понимаю, что данный пост уже был, но написан он ужасно, не понятно, к тому же указанный в нём метод ещё и не работает.
Поэтому сегодня я предлагаю к рассмотрению детальный туториал по созданию рекламы в Android-приложении, созданном на движке Unity3D, рассчитанный для новичков.
Начнём.
Что нам понадобится:
1) Плагин для Unity3D, ссылка на GitHub, скачиваем под нашу версию Unity;
2) Аккаунт в сервисе AdMob;
3) Сам движок Unity3D;
Сервис Admob будет предоставлять рекламу в наше приложение, засчитывать показы, клики и фиксировать это всё на Вашем аккаунте.
После процедуры регистрации нам нужно монетизировать новое приложение, выбираем соответствующую опцию.
Монетизируем новое приложение, потом его можно будет привязать к игре на Google Play после процедуры модерации.
Настройка аналитики так же на вкус и цвет, в зависимости от надобности. Admob выдаёт результаты не в реальном времени а по прошествии некоторого времени (по моим наблюдениям двое суток), когда аналитика позволяет видеть всё в реальном времени, если Вам нужны результаты сразу.
Следующим шагом будет создание рекламный блоков. Вы можете создать один для всей игры, а можете штук 20 для всех сцен в игре, тут исключительно Ваш выбор, я делаю несколько игровых блоков на весь игровой процесс, так как в каждом случае вводить ID блока на каждую сцену — достаточно муторное занятие и отличий по эффекивности не имеет, разве что каждый блок прогружается в отдельности от других и это увеличивает количество показов рекламы.
Создаём баннер с частотой обновления 60 секунд, на самом деле можно указать любое значение, но важно, чтобы это значение так же было указано в плагине, скоро дойдём до этой части.
После создания баннера мы получаем идентификатор рекламного блока в формате: ca-app-pub-ххххххххххххххх/хххххххххх, этот идентификатор и является привязкой нашего рекламного блока в приложении с сервисом Admob. На этом манипуляции с Admob закончены.
В префабе находится 3 скрипта, каждый отвечает за свою роль:
1) Ad Mob Plugin — главный скрипт, который и выдаёт нашу рекламу.
2) Ad Mob Plugin Debug — дополнительный скрипт, который показывает кнопки, с помощью которых можно менять положение / вид / размер баннера в приложении.
3) Ad Mob Plugin Mockup — макет баннера. Используется для теста рекламного блока на сцене.
Последние два скрипта используются для тестирования, их нужно обязательно отключить перед билдом игры, иначе Вы получите игру с кнопками и макетом. Я не буду останавливаться на этих скриптах, так как самый главный для нас — это первый скрипт.
Отмечу несколько главных полей с этом скрипте:
Publisher ID — это и есть тот самый идентификатор рекламного блока, который мы получили в Admob (ca-app-pub-ххххххххххххххх/хххххххххх). Соответственно вводим его в это поле.
Is Testing — режим тестирования. Обязательно убираем галочку перед билдом.
Size — размер баннера. Выбираем нужный (можно посмотреть в тестовом режиме каждый размер).
Orientation — ориентация по вертикали или по горизонтали.
Horizontal position — позиция по горизонтали.
Vertical position — позиция по вертикали.
Refresh Interval — частота обновления рекламного блока, ставим то же значения, что указали в Admob (60 сек.).
Load on Start — включение загрузки рекламы сразу при старте приложения.
Дальше идут настройки Target — включение режима направленной (таргетированной) рекламы на определённую аудиторию.
Напомню основные моменты: Перед билдом отключаем Is Testing в Ad Mob Plugin, отключаем в префабе Ad Mob Plugin Debug и Ad Mob Plugin Mockup, вписываем наш Идентификатор рекламного блока в Publisher ID. В сцене с рекламой один префаб Admob Plugin.
Билдим наше приложение и обяательно проверяем на кликабельность. Если Ваша реклама показывается, кликается и переносит Вас по ссылкам, значит всё хорошо и в дальнейшем чтении этого поста вы не нуждаетесь. Но будьте осторожны! Если Вы будете кликать очень много раз, это означает, что на 1000 показов рекламы у вас 1000 кликов, т.е. эффективность рекламы = 100%, чего, конечно же, никогда не бывает и Ваш аккаунт Admob могут забанить за накрутку кликов.
Если же после билда и инсталла приложения реклама в нём показывается, но при клике по ней ничего не происходит, тогда есть небольшие проблемы и Вам со мной по пути.
Вся суть проблемы заключается в файле Android Manifest плагина.
Находим в Unity манифест (идёт с плагином при установке), открываем в редакторе и переставляем в нём одну строчку:
Сохраняем манифест, билдим приложение и проверяем на кликабельность.
В следующем посте опишу реализацию leaderboard для Android приложения на Unity3D.
Управление рекламой (android)
Реклама в приложении — это очень важный момент, а иногда и единственный заработок.
Думаю, многие задавались вопросом о том, какая реклама лучше и где ее лучше размещать. Каждое приложение индивидуально, поэтому нужно экспериментировать.
Выпускать каждый раз обновления приложения с экспериментами? Не вариант. Гораздо лучше все настройки хранить на стороне сервера, а в приложении реализовать логику показа рекламы.
Но все ли так просто?
Цель данного поста:
— внести небольшой вклад в open source (исходники, демка)
— получить адекватную критику
— найти разработчиков, которые готовы поддержать проект
— попиарить приложение Цены в Китае, где используется данный подход
Предисловие
Сразу хочу сказать, что я не очень опытный Android/Java разработчик. Программирую в основном на php (более 5 лет). Это мое первое android приложение, поэтому не судите строго.
Возможности библиотеки
Виды рекламы
— AdMob
— StartAd.mobi
— свой баннер, написанный в виде html
Отображение
— Снизу
— Сверху
— В списке (с заданным шагом)
— Внутри указанного элемента (указываем id элемента)
— Межстраничная реклама (на весь экран)
Примеры использования
AdMob снизу
AdMob smart
Если нужно растянуть на всю ширину экрана
Свой баннер сверху
В списке с шагом 15
В конкретном месте
Межстраничный баннер
Настройки на стороне сервера
Подключение к проекту
На текущий момент это не библиотека, а обычное приложение. Чтобы использовать в своем приложении нужно сделать следующее:
— перенести библиотеки из папки libs
— обновить зависимости в build.gradle
Планы на будущее
— реализовать backend для настроек на сервере. У меня это уже реализовано в проекте, но нужно как-то перенести.
— статистики показов (тоже реализовано) и кликов
— добавить больше типов рекламы
— исправить TODO и FIXME в коде
— оформить в виде библиотеки (а не в виде проекта с копирование файлов в нужные места)
— выложить в maven репозиторий
Помощь
Времени как всегда не хватает, поэтому любая помощь от разработчиков не помешает. Давайте не будем стесняться что-то делать и показывать это другим. Вспомнилась поговорка «Не бойся ошибиться, бойся не попробовать». Я не прошу реализовывать что-то сверхестественное. Просто если вы будете использовать что-то из этого в своем проекте и решите добавить что-новое, или найдете какой-то баг — не поленитесь, пришлите pull request.
Добавление AdMob рекламы в Android приложение с использованием Firebase
Предисловие
Вводим «AdMob» в Google и первым сайтом уже будет не AdMob-ский, а Google-ский сайт. После перехода на оный Вас начнут по немногу переманивать на темную сторону Firebase (недавно купленный Google).
Firebase дает довольно обширные возможности по аналитике (по крайней мере для меня, как программиста, а не маркетолога) рекламы в вашем приложениее (рост, вес, страна, кол-во просмотров, версии Android куда установливалось и тд. и тп.).
Первым делом был найден пост, но он для Eclipse, а после первых попыток сделать по примеру — начались предупреждения о depricated да и вообще ошибки.
Прочитав больше информации стало понятно, что переход AdMob на firebase произошел недавно и разбиратся придется самому.
Давайте посмотрим как с этим жить теперь
Минимальные требования: (с учетом которых была написана статья).
Шаг 1
Добавляем зависимости в build.gradle файлы. Первым делом в ‘Module: app’:
Теперь во второй (‘Project: AdMobOnHabr’):
После чего рекомендуется сделать Tools → Android → «Sync Project with Gradle Files» и скомпилировать проект. Видимого результата еще нету, но главное — ошибок нету? Отлично! Идем дальше.
Шаг 2
Входим в свой аккаунт на AdMob. Выбираем ручное добавление приложения (если Ваше приложение уже опубликовано в Google Play — воспользуйтесь поиском в первой вкладке).
Добавим в наше приложение рекламный баннер (с другими видами предлагаю ознакомится самостоятельно). Частоту обновления Я выбрал минимально допустимую — 30 сек., название рекламного блока на Ваше усмотрение.
Дальше Вам предложат «Настройте Firebase Analytics (необязательно)» — нужное слово подчеркул. Пока что это ни к чему — пропускаем. Ознакамливаемся с «инструкциями по интеграции», жмем Готово. После переадресации видим страницу и долгожданный ID рекламного блока:
Добавляем ad unit ID в strings.xml:
Не забудьте, что для рекламного блока на другой Activity нужен новый ID.
Шаг 3
Добавляем AdView элемент на activity_admobbanner.xml:
В атрибут ‘ads:adUnitId’ записываем ресурс из strings.xml с ID рекламного блока.
Несколько советов и заметок:
Google рекомендует писать тэг закрывая так:
Шаг 4
Инициализируем Google Mobile Ads SDK. Для этого Вам понадобится app ID взятый с AdMob. Жмем шестеренку справа вверху → Управление приложением:
Вот оно, счастье нужный app ID:
Пишем саму, собственно, инициализацию используя свой app ID:
Шаг 5
Последнее действие по версии Google — загрузить долгожданную рекламу в AdView элемент:
На эмуляторе следуя политике AdMob вы не можете выводить реальную рекламу (показывается только тестовая). Довольно логично. Но если у Вас есть реальное устройство — можете протестировать рекламу в действии на нем и порадовать себя успехом.
Остается вопрос — где взять волшебный DEVICE_ID_EMULATOR? Все в один голос рекомендуют очень «трушный» способ: пишите вместо DEVICE_ID_EMULATOR любое значение, к примеру:
После чего запускаете приложение на своем устройстве и смотрите logcat. Там найдете лог подобный этому:
Что делать дальше ясно — копируйте полученный код в метод упомянутый выше и радуйтесь жизни.
Заметка:
Дело было ночью, спать хотелось, в общем не повторяйте моих ошибок:
При поиске ID вашего реального устройства — не забудьте выбрать logcat девайса, на котором запущено приложение (у меня, к примеру, было запущено еще несколько эмуляторов и Я упорно не мог понять почему в лог эмулятора не выводится так нужный мне ID)
Вроде бы все сделали как написано, все должно работать, а нам пора ложится спать работать над следующей фичей но…
Шаг 6
Где-то между строк Вы должны были прочитать, что без google-services.json оно работать не будет. Скорее всего, даного файла у Вас еще нету. Давайте искать вместе.
Google любезно предоставляет Вам «простыни» инструкций как сделать google-services.json. Но у меня возник вопрос — неужели в 2к16 году нужно самому сидеть и писать этот файл, который, к всему, скорее всего довольно шаблонный?
Ответ находится в Google Developer Console, где все таки подумали про желание ленивого программиста.
Жмем Continue. Выбираем Google Sing-In. Дальше просто — Вы же знаете на память свой SHA-1?
Вставляем полученый SHA-1 код, жмем «Enable Google Sign-In» и «Continue to Generate configuration files».
Ну, вы поняли. Скачиваем сгенерированный файл и копируем в корневой каталог приложения:
Собираем свой проект — готово. Путем подобных несложных манипуляций в Вашем приложении теперь есть реклама.
Установка Admob в Андроид приложение
В этом материале мы поговорим о добавлении AdMob рекламы в своё приложение на Android. Очень много разработчиков начинает заниматься созданием игр и приложений на мобильной платформе, но у многих возникает вопрос как поставить AdMob к себе в приложение.
В августе 2014 Google значительно поменяла API AdMob и внутреннюю структуру. Из-за этого гайды по установке AdMob в приложение, которые писались ранее августа 2014 года будут просто недействительны.
В этой статье мы вам преподадим самую актуальную на сегодняшний день информацию по установке AdMob к себе в приложение. Также мы постараемся отдельно осветить использование AdMob с приложением или игрой написанной на HTML. Похали.
1. Регистрируемся в AdMob
Перейдите на официальный сайт Admob и зарегистрируйтесь там.
2.Импортируем библиотеку Google Play Services
Как бы не печально было, но теперь чтобы использовать AdMob вам придётся подключать библиотеку Google Play Services, так как теперь всё там.
2.1 Откройте Eclipse и импортируйте библиотеку как приложение по адресу:
Библиотека должна у вас появится в списке приложений слева (по умолчанию). Так и должно быть.
Следующим шагом мы подключим библиотеку к нашему проекту:
1. Выберите в списке проектов ваш, нажмите ПКМ и выберите Properties.
2. В появившемся окне вам нужно выбрать Android слева и затем добавить (Add) нашу библиотеку к проекту.
3. Сохраняем изменения и идём далее.
4. Теперь нужно добавить кое-что в файл манифеста вашего приложения
4.1. Разрешение пользования интернетом
4.2. Для работы объявлений
Сразу перед закрывающим тегом поставьте:
И после открытого тега поставьте:
Также есть требования к вашему приложению: Необходимо чтобы MIN SDK был 9 или выше и TARGET SDK был не ниже 13.
3. Вставляем код AdMob в приложение
Здесь нужно сразу отметить что существует два типа объявлений: межстраничные и баннеры. Разница меж ними в том что баннеры могут стоять где-то в определённом месте разметки вашего приложения и могут быть настраеваемых размеров, в то время как межстраничные объявления всегда на весь экран и обычно их вставляют перед появлением другого окна или страницы в приложении откуда и пошло название.
Давайте разберём как вставить баннер и межстраничное объявление.
Баннер
Для начала подключите к файлу Активити пакейдж:
Затем объявляем переменную:
private AdView adView;
Ну и теперь в OnCreate засовываем код:
adView = new AdView(this);
adView.setAdUnitId(«ВАШ AD_ID«);
adView.setAdSize(AdSize.SMART_BANNER); //Размер баннера
LinearLayout layout = (LinearLayout)findViewById(R.id.admob);
layout.addView(adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Вы должны модифицировать выделенные жирным места, а вместо R.id.admob должны поставить название того поля разметки, где планируете отображать рекламу AdMob.
Стоит отметить, что появившиеся объявления мы сделали для финальной версии приложения. По этим объявлениям нельзя кликать и лучше на таком коде не тестировать приложение.
Специально для тестирования у AdMob API есть тестовый режим. Для его активации вы должны заменить строку:
AdRequest adRequest = new AdRequest.Builder().build();
AdRequest adRequest =new com.google.android.gms.ads.AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice(«0123456789ABCDEF»).build();
Вместо 0123456789ABCDEF поставьте ваш ID реального устройства на котором вы выполняете отладку.
Идентификатор вашего устройства вы можете увидеть когда запускаете приложение на устройстве. В консоли Eclipse появляется строка:
Uploading Application.apk onto device ‘0123456789ABCDEF’
Так вот 0123456789ABCDEF и будет ID вашего устройства.
Межстраничное объявление
private InterstitialAd interstitial;
Ну и собственно внедряем в код:
// Создаём межстраничное объявление
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId(«ca-app-pub-7005422997439281/8742819574»);
// Создаём запрос к AdMob
AdRequest adRequesti = new AdRequest.Builder().build();
// Начинаем загружать объявление
interstitial.loadAd(adRequesti);
Для того чтобы вызвать объявление нужно использовать interstitial.show();. Но лучше прежде проверять загружено ли оно. Для этого разместите в файле функцию:
public void displayInterstitial() <
if (interstitial.isLoaded()) <
interstitial.show();
>
>
Опять-таки приведённый код для финального приложения. Для тестового замените строчку:
AdRequest adRequesti = new AdRequest.Builder().build();
AdRequest adRequesti = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice(«0123456789ABCDEF»)
.build();
О цифрах 0123456789ABCDEF почитайте выше.
Иногда целесообразно ставить слушатель на загрузку межстраничного объявления. И когда оно загружается что-то выполнять. Например отображать его.
Чтобы поставить слушатель, в коде где вы внедряли объявление допишите:
interstitial.setAdListener(new AdListener() <
@Override
public void onAdLoaded() <
Toast.makeText(getBaseContext(), «Загружено», Toast.LENGTH_SHORT).show();
>
>);
HTML приложение и AdMob
Но вы можете также как и на нативной платформе использовать межстраничные объявления и баннеры.
Например если вы хотите чтобы ваша реклама была внизу экрана, делаем такой layout:
Чтобы использовать межстраничные объявления вам нужно использовать Java-Javascript мост с такой логикой:
1. Загружаем объявление, но не отображаем
2. Пользователь использует приложения или игру
3. Настаём момент перехода пользователя в другое окно. Нужно использовать объявление.
4. С помощью Javascript посылаем в наш мост команду отобразить объявление.
5. Сразу после отображения ставим загрузку нового объявления
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.
Объявим переменную класса 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().