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

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Интересно ли Вам это?

    • +9
    • 18,3k
    • 7
    Поделиться публикацией

    Комментарии 7

      0
      Если честно я не сторонник рекламы и думаю не только меня напрягает, что элементарное приложение типа блокнота или игры сапер требует разрешение на выход в Инет, и непонятно то ли оно что то туда будет сливать то ли показывать назойливую рекламу — такой подход не правильный. Понятно дело что хочется заработать, но зарабатывать нужно на качественном функционале программы, например делая востребованную функцию платной, а не на показе рекламы там где её просто абсурдно показывать.
        +4
        Не знаю ни одного сторонника рекламы. И думаю обсуждение о том нужна ли реклама или нет выходит за пределы данного поста.
          +1
          Реклама в приложении — это очень важный момент, а иногда и единственный заработок.

          Как правильно указал автор, иногда другого способа заработать нет (привет странам, которые не могут предоставлять платный контент и Гуглу, который, не смотря на свою «усиленную работу» в этом направлении, уже около двух лет не обновлял списки стран, которые могут продавать приложения).

          Так что да, о рекламе как «зле» можно спорить долго, но статья не о том.
          0
          Поделились бы своими находками в увеличении CTR, было бы интересно. И, кстати, неужели можно размещать баннер в прокручивающемся списке? На iOS точно нельзя.
            0
            Да, конечно. Может напишу пост с цифрами и графиками потом, но в двух словах отвечу и тут.

            Реклама в приложении в основном отображается снизу на всех страницах. Пробовал в списке (с шагом 15), но заполняемость низкая (не успевают догрузиться баннеры admob) и не удобно для пользователя, поэтому отказался от этого. Если свои баннеры (которые быстро грузятся) думаю будет лучше.

            А вот межстраничные объявления порадовали — прибыль увеличилась без преувеличения в 4 раза! Но и минусов тут хватает — реакция пользователей и оценка приложения (была 4.2, стала 3.8).
              0
              Ну так, а чем ваша находка? eCPM у фулскринов как и клик рейт намного выше, тут либо показывать фул скрин банеры и зарабатывать, либо не показывать и зарабатывать только на мигающих снизу. Ожидал, что вы подобрали оптимальный refresh rate для максимального eCPM и место, но не дефолтное снизу-сверху, а рядом с какими-то элементами которые повышают клик рейт, ну или в нужный момент он у вас появляется.
              0
              И, кстати, неужели можно размещать баннер в прокручивающемся списке? На iOS точно нельзя.

              Да, можно. Вот, кстати, пример — googleadsdeveloper.blogspot.com/2012/03/embedding-admob-ads-within-listview-on.html

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое