Реклама в приложении — это очень важный момент, а иногда и единственный заработок.
Думаю, многие задавались вопросом о том, какая реклама лучше и где ее лучше размещать. Каждое приложение индивидуально, поэтому нужно экспериментировать.
Выпускать каждый раз обновления приложения с экспериментами? Не вариант. Гораздо лучше все настройки хранить на стороне сервера, а в приложении реализовать логику показа рекламы.
Но все ли так просто?
Цель данного поста:
— внести небольшой вклад в open source (исходники, демка)
— получить адекватную критику
— найти разработчиков, которые готовы поддержать проект
— попиарить приложение Цены в Китае, где используется данный подход
Предисловие
Сразу хочу сказать, что я не очень опытный Android/Java разработчик. Программирую в основном на php (более 5 лет). Это мое первое android приложение, поэтому не судите строго.
Возможности библиотеки
Виды рекламы
— AdMob
— StartAd.mobi
— свой баннер, написанный в виде html
Отображение
— Снизу
— Сверху
— В списке (с заданным шагом)
— Внутри указанного элемента (указываем id элемента)
— Межстраничная реклама (на весь экран)
Примеры использования
AdMob снизу
AdMob ad = new AdMob(activity, adMobId);
AdManager manager = new AdManager(ad);
manager.show(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
AdMob smart
Если нужно растянуть на всю ширину экрана
adMob.setAdSize(AdSize.SMART_BANNER);
Свой баннер сверху
AdCustom ad = new AdCustom(activity, html);
AdManager manager = new AdManager(ad);
manager.show(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
В списке с шагом 15
AdListAdapter adapter = new AdListAdapter(oldAdapter);
AdMob ad = new AdMob(activity, adMobId);
adapter.setStep(15);
adapter.setAd(ad);
adapter.notifyDataSetChanged();
В конкретном месте
<LinearLayout
android:id="@+id/inline_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
AdStartAd ad = new AdStartAd(activity, startadId);
AdManager manager = new AdManager(ad);
manager.showInView("inline_banner");
Межстраничный баннер
AdMobInterstitialAd ad = new AdMobInterstitialAd(activity, admobId);
ad.show();
Настройки на стороне сервера
new AdsLoadTask(getActivity(), sectionNumber, adapter, "android").execute();
Подключение к проекту
На текущий момент это не библиотека, а обычное приложение. Чтобы использовать в своем приложении нужно сделать следующее:
— перенести библиотеки из папки libs
— обновить зависимости в build.gradle
compile 'com.google.android.gms:play-services:4.0.30'
compile files('libs/StartADLib-1.0.1.jar')
compile 'com.google.code.gson:gson:2.2.4@jar'
— изменить AndroidManifest.xml
<meta-data android:name="email" android:value="you@email" />
<meta-data android:name="trackingId" android:value="yourid" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
Планы на будущее
— реализовать backend для настроек на сервере. У меня это уже реализовано в проекте, но нужно как-то перенести.
— статистики показов (тоже реализовано) и кликов
— добавить больше типов рекламы
— исправить TODO и FIXME в коде
— оформить в виде библиотеки (а не в виде проекта с копирование файлов в нужные места)
— выложить в maven репозиторий
Помощь
Времени как всегда не хватает, поэтому любая помощь от разработчиков не помешает. Давайте не будем стесняться что-то делать и показывать это другим. Вспомнилась поговорка «Не бойся ошибиться, бойся не попробовать». Я не прошу реализовывать что-то сверхестественное. Просто если вы будете использовать что-то из этого в своем проекте и решите добавить что-новое, или найдете какой-то баг — не поленитесь, пришлите pull request.
Эксперименты и выводы
Экспериментировал с рекламой я много (2 месяца) и нашел оптимальный вариант для себя. Многим пользователям он не нравится, но удалось увеличить CTR c 0.2 до 0.9. Появится время — поделюсь статистикой по приложению (трафик, оценки, прибыль). Уже есть небольшой опыт и есть что рассказать.
Автор: TpeHep