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