Pull to refresh

Управление рекламой (android)

Reading time 3 min
Views 20K
Реклама в приложении — это очень важный момент, а иногда и единственный заработок.

Думаю, многие задавались вопросом о том, какая реклама лучше и где ее лучше размещать. Каждое приложение индивидуально, поэтому нужно экспериментировать.

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

Но все ли так просто?

Цель данного поста:
— внести небольшой вклад в 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);


image

AdMob smart

Если нужно растянуть на всю ширину экрана
adMob.setAdSize(AdSize.SMART_BANNER);


image

Свой баннер сверху

AdCustom ad = new AdCustom(activity, html);
AdManager manager = new AdManager(ad);
manager.show(Gravity.TOP | Gravity.CENTER_HORIZONTAL);


image

В списке с шагом 15

AdListAdapter adapter = new AdListAdapter(oldAdapter);

AdMob ad = new AdMob(activity, adMobId);
adapter.setStep(15);
adapter.setAd(ad);
adapter.notifyDataSetChanged();


image

В конкретном месте

<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");


image

Межстраничный баннер

AdMobInterstitialAd ad = new AdMobInterstitialAd(activity, admobId);
ad.show();


image

Настройки на стороне сервера

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. Появится время — поделюсь статистикой по приложению (трафик, оценки, прибыль). Уже есть небольшой опыт и есть что рассказать.
Only registered users can participate in poll. Log in, please.
Интересно ли Вам это?
27.48% Нет, бесполезная штука 36
32.06% Да, буду использовать в своих проектах 42
43.51% Да, но еще сырая реализация. Подожду 57
10.69% Буду активно учавствовать в поддержке 14
131 users voted. 73 users abstained.
Tags:
Hubs:
+9
Comments 7
Comments Comments 7

Articles