Единственным заработком бесплатных приложений (помимо продажи личных данных пользователя) является размещение рекламы.
Есть много рекламных площадок, но по многим причинам я выбрал 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. В качестве временной меры, пришлось загрузить раннюю версию и включить её в проект взамен новейшей.