2 December 2011

Монетизация Android-приложения с помощью рекламы от AdMob с возможностью платного отключения. Часть первая

Development for Android
Sandbox
Всем привет! На Хабрахабре уже была статья о том, как сделать платное отключение рекламы в 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.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    package="com.sample.billing"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="13" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:debuggable="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".BillingSampleActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:name="com.google.ads.AdActivity" />
    </application>

</manifest>

Теперь нам нужно снова вызвать свойства проекта. В левой части окна выберите пункт «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 и создайте следующее строковое значение:
<string name="admob_publisher_id">скопированный ранее Publisher ID</string>



Теперь откройте файл 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:
    <com.google.ads.AdView
    	 android:id="@+id/adView"
    	        android:layout_width="wrap_content"
    	        android:layout_height="wrap_content"
    	        ads:adSize="BANNER"
    	        ads:adUnitId="@string/admob_publisher_id"
    	        ads:loadAdOnCreate="true" />
Ниже показано содержимое файла main.xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:text="@string/hello" />
    </LinearLayout>

    <com.google.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="@string/admob_publisher_id"
        ads:loadAdOnCreate="true" />
</LinearLayout>

В режиме «Graphic Layout» разметка выглядит следующим образом:



Теперь подключаем свое устройство (или эмулятор) и нажимаем Run. Смотрим, что получилось.



Заключение


В результате проделанных действий мы добавили рекламу AdMob в свое приложение. Как видно, сделать это довольно не сложно.
Следующим этапом будет разработка функционала для платного отключения рекламы при помощи Android MArket In-app Billing, о чем я расскажу в следующей части статьи.

Исходники разработанного приложения можно скачать здесь.

Спасибо за внимание. Надеюсь, что кому-то материал будет полезен. Буду рад вашим комментариям.

Использованные источники

  1. Google AdMob Ads Android Fundamentals
  2. Hello, World | Android Developers
  3. Stack Overflow
To be continued…
Tags:androidмонетизациярекламаadsadmob
Hubs: Development for Android
+50
123.3k 430
Comments 30
Popular right now
Android
from 150,000 ₽NatsONМоскваRemote job
Android-разработчик
from 80,000 ₽FlowwowRemote job
Android-разработчик
to 80,000 ₽AmigowebМагнитогорскRemote job
Android-разработчик
from 170,000 to 230,000 ₽ENJOY PROСанкт-ПетербургRemote job
Android Developer
from 150,000 to 200,000 ₽/difway.studioRemote job
Top of the last 24 hours