Размещаем рекламный банер от Admob

Единственным заработком бесплатных приложений (помимо продажи личных данных пользователя) является размещение рекламы.

Есть много рекламных площадок, но по многим причинам я выбрал Admob.

В этой статье я расскажу как установить простой рекламный баннер в ваше приложение.

Руководство по размещению баннера имеется на родном сайте. Там же найдете пример с исходными кодами.

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

Баннер это ещё один элемент View, который может быть указан статически в файле разметки (layout), а может быть добавлен динамически, во время запуска программы.

Во втором случае я всегда проверяю доступность гугл сервисов и если в приложении есть платное отключение рекламы — не отключил ли пользователь её.

Если все хорошо, тогда показывает пользователю рекламу, если не очень, то не показываем.

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

По окончании получим id рекламного баннера pubID (ca-app-pub-xxxxx/xxxxxx).

Реклама будет грузиться в собственной активности, поэтому нужно добавить её в манифест


А еще нужно добавить мета тег в раздел application


И разрешения на доступ к интернету и проверки состояния подключения


В свойствах проекта нужно добавить библиотеку google play services СнимокПредварительно её конечно нужно скачать при помощи Android SDK Manager и импортировать в рабочее пространство (workspace). Последняя версия работает с апи 9+ , для более ранних версий есть Google Play Services for Froyo , но использовать его не рекомендуют бывалые разработчики. Я следую их совету и людям с андроидом версии 2.2 просто не показываю рекламу.(Если уж им не повезло пользоваться нормальным устройством, так пусть хоть здесь повезет) Как добавлять баннер статически, есть пример в руководстве. После этого в какой-то момент (onCreate,onStart и т.п.) вам в коде нужно будет загрузить в баннер рекламу. Делается это вот так:

  AdView adView = (AdView)this.findViewById(R.id.adView);
  AdRequest adRequest = new AdRequest.Builder().build();
  adView.loadAd(adRequest);

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

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

Вот пример добавления баннера вниз страницы с разметкой RelativeLayout

int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

if (status == ConnectionResult.SUCCESS) {
   // Create an ad.
    adView = new AdView(this);
    adView.setAdSize(AdSize.BANNER);
    adView.setAdUnitId(getResources().getString(R.string.pubID));
    RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);
    lay.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelativeLayout1);
    layout.addView(adView, lay);
    AdRequest adRequest = new AdRequest.Builder().build();
    adView.loadAd(adRequest);
}

Вот пример с разметкой LinearLayout

int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
  if (status == ConnectionResult.SUCCESS) {
      adView = new AdView(this);
      adView.setAdSize(AdSize.BANNER);
      adView.setAdUnitId(getResources().getString(R.string.pubID));
      LinearLayout.LayoutParams lay = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT,
      LinearLayout.LayoutParams.WRAP_CONTENT);
      lay.gravity = Gravity.BOTTOM;
      LinearLayout layout = (LinearLayout) findViewById(R.id.LL);
      layout.addView(adView, lay);
      AdRequest adRequest2 = new AdRequest.Builder().build();
      adView.loadAd(adRequest2);
  }

Когда мы добавляем в разметку элемент, мы одновременно добавляем его параметры (layout.addView(adView, lay);
Параметры дочернего элемента должны быть соответствующими, т.е. RelativeLayout к RelativeLayout , LinearLayout к LinearLayout и т.д.
Если сложно по началу добавлять элементы динамически, то можно спроектировать все в статике, а потом воспроизвести все свойства элемента в динамике.

После недавнего обновления SDK при загрузке новой версии приложения, консоль ругалась на новую версию библиотеки google play services. В качестве временной меры, пришлось загрузить раннюю версию и включить её в проект взамен новейшей.

Нашли ошибку в тексте?

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *