RAD Studio XE6: размещение рекламы Admob в Android-приложении

Этот пост был опубликован мной более года назад. Информация, описанная ниже, уже могла потерять актуальность, но всё ещё может быть полезна.

green frog iphone case beside black samsung android smartphone
Photo by Denny Müller on Unsplash

Вот, первый пост в свежем 2015-ом году. Его я посвящу теме программирования, хотя его тут будет минимум. Перейду к делу.

Что имеем:

  • Google-аккаунт (с незаблокированным доступом к AdSense);
  • RAD Studio XE6 и выше (версия важна, т.к. в них разные танцы с бубном);
  • проект приложения в RAD Studio.

Что хотим: слегка монетизировать это приложение после его публикации засчёт рекламы, отображающейся в нём.

Создаём рекламный блок

Итак, первым шагом необходима регистрация в сервисе AdMob: https://apps.admob.com/admob/signup. Заполняем все необходимые поля. Это и почтовый адрес, и валюта, и что-то ещё, уже не помню.

После регистрации будет предложено добавить приложение для монетизации. Должен сказать, что AdMob теснейшим образом взаимоинтегрирован с Google Play (кстати, также и с AdSense, и с Analytics, и с прочими гуглосервисами), поэтому на первом шаге будет предложено ввести имя пакета (или своё как разработчика) чтобы найти приложение в GPlay. Но не будет ничего страшного, если в гугломаркете твоего приложения ещё нет.

Я просто выбираю «Добавить новое приложение вручную» и заполняю поля:

После добавления приложения необходимо создать рекламный блок, который будет крутиться где-то в приложении:

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

В конечном итоге мы получаем индентификатор нашего баннера:

Он уникален для каждого создаваемого рекламного блока. Имеет формат:

ca-app-pub-xxxxxxxxxxxxxxxx/yyyyyyyyyy

где pub-xxxxxxxxxxxxxxxx — твой идентификатор издателя (отображается в правом верхнем углу), yyyyyyyyyy — судя по всему, идентификатор непосредственно самого блока.

Сохрани где-нибудь у себя всю полученную строку, без неё ничего не выйдет.

Вставляем рекламу в приложение

Открывай свой проект приложения в RAD Studio. В нужном месте твоего интерфейса необходимо добавить компонент TBannerAd. Бросаешь его на форму, выставляешь нужное прилипание (например, классическое MostBottom, при условии, что Parent у баннера именно форма, а не какой-нибудь ListView).

Для формы создаёшь обработчик события OnShow и в нём пишешь такие строки:

BannerAd1.AdUnitID := 'ca-app-pub-xxxxxxxxxxxxxxxx/yyyyyyyyy';
BannerAd1.LoadAd;

Открываешь блокнотом файл AndroidManifest.template.xml, в него вставляешь строки:

перед <activity ... >

<meta-data android:name="com.google.android.gms.version" android:value="4323000" />

после </activity ...>

<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

Примечание: говорят, с тех пор, как была выпущена XE6, изменился механизм показа рекламы. Толи в Android, толи в AdMob. Поэтому, если ты столкнулся с проблемами, то советую изучить этот вопрос самостоятельно: http://fire-monkey.ru/topic/547-novyi-admob-v-delphi-xe6-prilozhenii. Автор там сам разобрался и говорит, что возможные проблемы должен помочь решить вот этот патч.

У компонента TBannerAd есть свойство TestMode (boolean).
Если оно = true, то будет отображаться тестовый блок, а не реклама. Например, так:

При этом в AdMob не будут считаться показы рекламы, ведь фактически она и не показывается.

Это делается для того, чтобы протестировать правильность настройки проекта. Когда там будет отображаться настоящая реклама, а ты на неё ткнёшь, то рано или поздно может произойти блокировка доступа ко всему AdSense (а значит и AdMob) для твоего гуглоаккаунта. Поверь, в этом мало приятного.

Если TestMode не установить в true, тогда в панели управления AdMob счётчики показа будут увеличиваться. Вот так выглядела моя ПУ после тестов моего приложения:

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

Всё? В принципе, реклама уже добавлена в приложение и всё, казалось бы, прекрасно. Но не сразу: я долго изучал вопрос почему реклама не отображается, хотя было всё сделано как надо. Не найдя решения, даже опустил руки и плюнул.

Потом просто запустил приложение в очередной раз и реклама таки появилась! Я не сразу понял это, но причина проста: когда создаёшь рекламный блок в панели управления AdSense и потом вставляешь код объявления в нужное место сайта, то реклама там отображается далеко не сразу, а это место чем-то замещается. Проходит какое-то время (от минут до часов) и всё встаёт на свои места. Здесь ситуация аналогичная. Настоящая реклама по началу долго идёт до твоего рекламного места.

Так что не следует суетиться из-за «нерабочей» рекламы сразу после её создания — возможно, твоё рекламное место ещё не «активировалось». Лучше включи TestMode.

Несколько ссылок по теме:

Смотри внимательно, они алгоритмы немного различаются.

Добавить комментарий

Ваш адрес email не будет опубликован.