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

в 9:09, , рубрики: Разработка под android

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

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

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

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

Цель данного поста:
— внести небольшой вклад в 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. Появится время — поделюсь статистикой по приложению (трафик, оценки, прибыль). Уже есть небольшой опыт и есть что рассказать.

Автор: TpeHep

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js