- Монетизация Android-приложения с помощью рекламы от AdMob с возможностью платного отключения. Часть первая
- Установка необходимых компонентов
- Настройка конфигурации приложения
- Получение AdMob Publisher ID
- Добавление рекламного баннера в приложение
- Заключение
- Android In-app purchasing: платное отключение рекламы в своём приложении
- Реклама в приложении
- In-app purchasing или внутренние платежи в приложениях
- Тестирование покупок
- Добавление AdMob рекламы в Android приложение с использованием Firebase
- Предисловие
- Давайте посмотрим как с этим жить теперь
Монетизация Android-приложения с помощью рекламы от AdMob с возможностью платного отключения. Часть первая
Всем привет! На Хабрахабре уже была статья о том, как сделать платное отключение рекламы в Android-приложении, где предлагалось использовать open-source библиотеку Android Billing Library. В данной статье я хочу рассказать о том, как реализовать подобный функционал при помощи системы внутренних платежей Android Market In-app Billing, не используя сторонних библиотек.
Статья состоит из двух частей. В первой части я подробно расскажу о том, как добавить рекламу от Google AdMob в свое приложение (данная часть в основном ориентирована на новичков), а во второй – как сделать ее платное отключение.
Для начала создадим проект простейшего приложения Android в среде Eclipse. О том, как это делается писать не буду (можете почитать об этом, например, здесь).
Установка необходимых компонентов
Для работы с AdMob нам необходимо установить Google AdMob Ads SDK, а также SDK для платформы Android версии 3.2 или выше (см. здесь). Также установим пакет Google Market Billing (о нем речь пойдет во второй части статьи).
Откройте «Android SDK Manager» с помощью команды главного меню Window > Android SDK Manager.
Выберите необходимые пакеты для установки и нажмите кнопку «Install packages…».
После установки пакетов подключим AdMob Ads SDK к проекту. Для этого:
- Нажмите правой кнопкой мыши по проекту в «Project Explorer» и выберите «Properties» (свойства проекта).
- В левой части окна выберите пункт «Java Build Path».
- Нажмите кнопку «Add External JARs…».
- Выберите файл GoogleAdMobAdsSdk-4.3.1.jar, который находится в папке «%ANDROID%\extras\google\admob_ads_sdk\».
В результате, файл GoogleAdMobAdsSdk-4.3.1.jar должен отобразиться в структуре проекта.
Настройка конфигурации приложения
Далее открываем файл конфигурации приложения AndroidManifest.xml и вносим следующие правки:
- Опционально можете добавить параметр android:installLocation=«preferExternal» в теге manifest. Использование этого параметра позволяет установить приложение на карту памяти.
- В теге uses-sdk добавляем параметр android:targetSdkVersion=«13». Версия 13 соответствует SDK для платформы Android версии 3.2. Если вы устанавливали SDK более поздней версии, то вставьте соответствующий номер версии.
- Далее нужно добавить разрешения ACCESS_NETWORK_STATE и INTERNET.
- И на последок, добавьте тег activity с параметрами android:configChanges=«keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize» и android:name=«com.google.ads.AdActivity» в теле тега application.
Ниже представлено содержание файла AndroidManifest.xml.
Теперь нам нужно снова вызвать свойства проекта. В левой части окна выберите пункт «Android». Затем в правой части выберите Android 3.2 на панели «Project Build Target». Если вы устанавливали SDK для Android более поздней версии, то выберите ее.
Получение AdMob Publisher ID
Далее, заходим на сайт www.admob.com (можете использовать для авторизации свой Google-аккаунт). Здесь нам нужно получить «Publisher ID» для привязки рекламы к нашему приложению. Заходим в раздел «Sites & Apps» и выбираем «Android App».
После ввода необходимых полей наше приложение должно появиться в списке «Sites & Apps». Теперь наводим курсор на название приложения и нажимаем появившуюся кнопку «Manage Settings».
После чего мы попадаем на страницу, на которой указан «Publisher ID» для нашего приложения. Скопируйте его, он нам пригодится далее.
Добавление рекламного баннера в приложение
Снова возвращаемся в проект. Откройте файл res/values/strings.xml и создайте следующее строковое значение:
Теперь откройте файл res/layout/main.xml.
Внесем в файл следующие изменения:
- Добавьте в корневой тег LinearLayout параметр xmlns:ads=«schemas.android.com/apk/lib/com.google.ads»
- Добавьте еще один LinearLayout и переместите в него TextView.
- Добавьте в новый LinearLayout параметр android:layout_weight=«1». Это нужно, чтобы он не перекрывал рекламный баннер.
- Добавьте компонент com.google.ads.AdView:
Ниже показано содержимое файла main.xml.
В режиме «Graphic Layout» разметка выглядит следующим образом:
Теперь подключаем свое устройство (или эмулятор) и нажимаем Run. Смотрим, что получилось.
Заключение
В результате проделанных действий мы добавили рекламу AdMob в свое приложение. Как видно, сделать это довольно не сложно.
Следующим этапом будет разработка функционала для платного отключения рекламы при помощи Android MArket In-app Billing, о чем я расскажу в следующей части статьи.
Исходники разработанного приложения можно скачать здесь.
Спасибо за внимание. Надеюсь, что кому-то материал будет полезен. Буду рад вашим комментариям.
Источник
Android In-app purchasing: платное отключение рекламы в своём приложении
Много раз уже просили написать статью о том, как в приложении реализовать платное отключение рекламы. По In-app уже были статьи на хабре. Правда, они старую версию API рассматривали. В принципе, новая версия не особо то и отличается от старой. Была похожая статья, но там больше именно про отображение рекламы рассказывалось, а второй части статьи мы так и не увидели. Как оказалось, многим до сих пор интересен этот вопрос, решил написать как это реализовать в своём приложении.
In-App Purchase представляет собой сервис покупки виртуальных товаров внутри приложения (например игровой валюты, новых уровней и т.д.). Применяется он в основном в играх, в тех случаях, когда встает вопрос о необходимости заработка на своем творении.
В данной статье рассмотрю как можно использовать In-App Purchase для отключения рекламы в своём приложении.
Реклама в приложении
В принципе, можно взять любую площадку. Возьмём, к примеру AdMob. Я для удобства обычно подобные вещи в обёртки запихиваю, чтобы при смене площадки, если потребуется, почти ничего не пришлось менять. Обёртки для рекламной площадки должны реализовывать интерфейс:
Тогда обёртка для AdMob будет выглядеть примерно так:
Тогда инициализация рекламы будет такой:
При такой реализации в случае смены площадки, мы просто создадим инстанс другого класса. Для работы вам нужен лишь ID_приложения. который получите после создания в приложения в админке Admob.
In-app purchasing или внутренние платежи в приложениях
Для того, чтобы работать с системой покупок необходим файл IMarketBillingService.aidl. Лежит он в /user/android-sdk-linux/extras/google/play_billing директории с SDK. Положить файлик надо в com.android.vending.billing пакет вашего приложения.
О типах покупок можно почитать тут. Нас интересую восстанавливаемые покупки, то есть те, что привязываются к аккаунту и повторно их уже не купить. Если вы удалите приложение и постановите заново, то покупка будет восстановлена. В нашем случае, после покупки отключения рекламы, реклама больше не будет беспокоить пользователя. Это касается и других устройств: если пользователь залогиниться на другом устройство под своим аккаунтом, то в приложение будет восстановлена покупка и реклама будет отключена.
Для работы необходимо добавить разрешение в AndroidManifest.xml:
Очень помогает официальная документация и пример из SDK.
Необходимо определить ключик в приложении – PublicKey, полученный при регистрации аккаунта на Android Market
Определяем IabHelper и инициализируем. Если удачно, то пытаемся восстановить покупки.
mGotInventoryListener – слушатель для восстановления покупок.
Теперь надо, собственно, саму покупку реализовать:
SKU_ADS_DISABLE – идентификатор товара, который вы создали в адмике Google Play. mPurchaseFinishedListener – слушатель:
Стоит отдельно поговорить о методе по верификации:
Сейчас нет никакой проверки покупок, но в реальном приложении вы должны сверять полученные данные с той сгенерированой строкой, что вы отправили в запросе на покупку. Проверять это надо на своём стороннем сервере. Для обычно приложения или офф-лайн игры это может и не критично, но для он-лайн игры это очень важно.
В принципе всё, теперь при запуске приложения просиходит проверка настроек (куда мы сохранили, что отключили рекламу):
После чего реклама уже не будет показываться.
Тестирование покупок
Сейчас довольно удобно тестировать своё приложение. Можно залить .apk как альфа/бета версию и опубликовать. При этом можно назначить группу в Google+, которая будет иметь возможность к тестированию. Если вы публикуете альфа или бета версию приложения, то в маркете она не появится, иметь доступ будет только эта группа.
Тестеры смогут осуществлять покупки. Деньги будут списываться без комиссии и будут возвращены после 15 минут после покупки. Так что, не беспокойтесь. Вот только у вас не получится протестировать приложение, если ваш аккаунт на устройстве и аккаунт издателя один и тот же =/
Полностью рабочий пример можете посмотреть на гитхабе.
Источник
Добавление AdMob рекламы в Android приложение с использованием Firebase
Предисловие
Вводим «AdMob» в Google и первым сайтом уже будет не AdMob-ский, а Google-ский сайт. После перехода на оный Вас начнут по немногу переманивать на темную сторону Firebase (недавно купленный Google).
Firebase дает довольно обширные возможности по аналитике (по крайней мере для меня, как программиста, а не маркетолога) рекламы в вашем приложениее (рост, вес, страна, кол-во просмотров, версии Android куда установливалось и тд. и тп.).
Первым делом был найден пост, но он для Eclipse, а после первых попыток сделать по примеру — начались предупреждения о depricated да и вообще ошибки.
Прочитав больше информации стало понятно, что переход AdMob на firebase произошел недавно и разбиратся придется самому.
Давайте посмотрим как с этим жить теперь
Минимальные требования: (с учетом которых была написана статья).
- Android Studio 2.2.2
- Быть зарегистрированным в Google Developer Console
- Быть зарегистрированным на AdMob
Мозг
Шаг 1
Добавляем зависимости в build.gradle файлы. Первым делом в ‘Module: app’:
Теперь во второй (‘Project: AdMobOnHabr’):
После чего рекомендуется сделать Tools → Android → «Sync Project with Gradle Files» и скомпилировать проект. Видимого результата еще нету, но главное — ошибок нету? Отлично! Идем дальше.
Шаг 2
Входим в свой аккаунт на AdMob. Выбираем ручное добавление приложения (если Ваше приложение уже опубликовано в Google Play — воспользуйтесь поиском в первой вкладке).
Добавим в наше приложение рекламный баннер (с другими видами предлагаю ознакомится самостоятельно). Частоту обновления Я выбрал минимально допустимую — 30 сек., название рекламного блока на Ваше усмотрение.
Дальше Вам предложат «Настройте Firebase Analytics (необязательно)» — нужное слово подчеркул. Пока что это ни к чему — пропускаем. Ознакамливаемся с «инструкциями по интеграции», жмем Готово. После переадресации видим страницу и долгожданный ID рекламного блока:
Добавляем ad unit ID в strings.xml:
Не забудьте, что для рекламного блока на другой Activity нужен новый ID.
Шаг 3
Добавляем AdView элемент на activity_admobbanner.xml:
В атрибут ‘ads:adUnitId’ записываем ресурс из strings.xml с ID рекламного блока.
Несколько советов и заметок:
- Не перепутайте ads и app при добавлении namespace в родительский ViewGroup;
На API Совет по Code Style тэга
Google рекомендует писать тэг закрывая так:
Шаг 4
Инициализируем Google Mobile Ads SDK. Для этого Вам понадобится app ID взятый с AdMob. Жмем шестеренку справа вверху → Управление приложением:
Вот оно, счастье нужный app ID:
Пишем саму, собственно, инициализацию используя свой app ID:
Шаг 5
Последнее действие по версии Google — загрузить долгожданную рекламу в AdView элемент:
На эмуляторе следуя политике AdMob вы не можете выводить реальную рекламу (показывается только тестовая). Довольно логично. Но если у Вас есть реальное устройство — можете протестировать рекламу в действии на нем и порадовать себя успехом.
- Для отображения рекламы на реальном тестовом девайсе перепишите код вот так:
Остается вопрос — где взять волшебный DEVICE_ID_EMULATOR? Все в один голос рекомендуют очень «трушный» способ: пишите вместо DEVICE_ID_EMULATOR любое значение, к примеру:
После чего запускаете приложение на своем устройстве и смотрите logcat. Там найдете лог подобный этому:
Что делать дальше ясно — копируйте полученный код в метод упомянутый выше и радуйтесь жизни.
Заметка:
Дело было ночью, спать хотелось, в общем не повторяйте моих ошибок:
При поиске ID вашего реального устройства — не забудьте выбрать logcat девайса, на котором запущено приложение (у меня, к примеру, было запущено еще несколько эмуляторов и Я упорно не мог понять почему в лог эмулятора не выводится так нужный мне ID)
Вроде бы все сделали как написано, все должно работать, а нам пора ложится спать работать над следующей фичей но…
Шаг 6
Где-то между строк Вы должны были прочитать, что без google-services.json оно работать не будет. Скорее всего, даного файла у Вас еще нету. Давайте искать вместе.
Google любезно предоставляет Вам «простыни» инструкций как сделать google-services.json. Но у меня возник вопрос — неужели в 2к16 году нужно самому сидеть и писать этот файл, который, к всему, скорее всего довольно шаблонный?
Ответ находится в Google Developer Console, где все таки подумали про желание ленивого программиста.
Жмем Continue. Выбираем Google Sing-In. Дальше просто — Вы же знаете на память свой SHA-1?
Если вдруг запамятовали — могу помочь. SHA-1 можно узнать с помощью keyltool или немного по-топорному — через gradle в самой AS . Так как лишних действий делать не хочется — выберем второй способ:
Вставляем полученый SHA-1 код, жмем «Enable Google Sign-In» и «Continue to Generate configuration files».
Ну, вы поняли. Скачиваем сгенерированный файл и копируем в корневой каталог приложения:
Собираем свой проект — готово. Путем подобных несложных манипуляций в Вашем приложении теперь есть реклама.
Источник