Поиск по этому блогу

суббота, 12 октября 2013 г.

Как добавить рекламу AdMob в Android PhoneGap приложение

PhoneGap это инструмент, позволяющий разрабатывать приложения на JavaScript и конвертировать их в нативные приложения мобильных платформ (такие как Android и iOS). AdMob это платформа для подключения рекламных баннеров в ваше приложения за просмотры и клики по которым можно получать деньги. Здесь я расскажу, как подключить к Android PhoneGap приложению рекламу от Google AdMob. Для этого понадобится сделать следующее

1. Зарегистрироваться в AdMob и получить Publisher ID для подключения рекламного баннера.
2. Внести изменения в Android проект для отображения рекламного баннера


1. Регистрация в AdMob и gполучение Publisher ID для подключения рекламы.

1. Зайти на сайт http://www.google.com/ads/admob/
2. Выбираем в меню Add Site/App
3. Выбираем Android App
4. Заполняем App Name, Category и App description. Не надо заполнять Android Package URL пока наше приложение не находится в Google Play. Оставляем это поле полностью пустым. (Нужно удалить из поля то, что там уже введено по умолчанию - это market://)
5. Нажимаем OK
6. Далее вы увидите экран на котором вам предлагают скачать AdMob Android SDK. Скачаем AdMob SDK потом, пока что нажимаем здесь Go to Sites/Apps.
7. Теперь вы видите список ваших приложений. Найдите добавленное только что приложение и наведите на его имя указатель мыши. Вы увидите появится кнопка Manage Settings. Нажимаем ее.  
8. Теперь мы видим Publisher ID. его значение нужно будет вставить в качестве значения поля AdMob_Ad_Unit в нашем Android приложении.

2. Подключение AdMob  к Android проекту

Скачать AdMob SDK можно здесь

https://developers.google.com/mobile-ads-sdk/download

После того как скачали необходимо положить скачанный файл в папку libs нашего android проекта.



1. Если работаем в Intellij Idea то нажимаем правой кнопкой по добавленному jar файлу  и выбираем Add as Library...
2. Если работаем в Eclipse, то нажимаем правой кнопкой на проекте и выбираем Build Path --> Configure Build Path. Теперь выбираем вкладку Libraries и нажимаем кнопку  Add Jars. Выбираем yourProject/libs/GoogleAdMobAdsSdk-*.*.*.jar

В главном java файле вашего android приложения необходимо добавить следующее.
1. Добавить к импорту
import com.google.ads.*;
import android.widget.LinearLayout;

2. Добавить константу и переменную в класс
private static final String AdMob_Ad_Unit = "xxxxxxxxxxxxxxx";
private AdView adView;

3. В методе onCreate после строчек
super.loadUrl(Config.getStartUrl());
//super.loadUrl("file:///android_asset/www/index.html")

добавить следующие строчки
adView = new AdView(this, AdSize.BANNER, AdMob_Ad_Unit);
LinearLayout layout = super.root;
layout.addView(adView);
AdRequest request = new AdRequest();
// для запуска на эмуляторе можно раскомментировать
//request.addTestDevice(AdRequest.TEST_EMULATOR);
adView.loadAd(request);

Вот как главный файл проекта выглядит у меня
import android.os.Bundle;
import org.apache.cordova.*;
import com.google.ads.*;
import android.widget.LinearLayout;
 
public class MyCoolApp extends DroidGap
{
 
    private static final String AdMob_Ad_Unit = "xxxxxxxxxxxxxxx";
    private AdView adView;
 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // Set by <content src="index.html" /> in config.xml
        super.loadUrl(Config.getStartUrl());
        //super.loadUrl("file:///android_asset/www/index.html")
 
        adView = new AdView(this, AdSize.BANNER, AdMob_Ad_Unit);
        LinearLayout layout = super.root;
        layout.addView(adView);
        AdRequest request = new AdRequest();
        //request.addTestDevice(AdRequest.TEST_EMULATOR);
        adView.loadAd(request);
 
    }
}

Добавляем в AndroidManifest в раздел aplication следующее
<activity android:configChanges=
"keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
android:name="com.google.ads.AdActivity" />

Также нужно проверить чтобы в AndroidManifest в разделе manifest были строки
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Вот как выглядит AndroidManifest у меня
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" 
          android:versionCode="3" 
          android:versionName="1.0.0"
          android:windowSoftInputMode="adjustPan" package="com.danilov.mycoolapp"
          xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true"
                      android:normalScreens="true" android:resizeable="true"
                      android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:debuggable="true" android:hardwareAccelerated="true"
                 android:icon="@drawable/icon" android:label="@string/app_name">
        <activity 
                android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
                android:label="@string/app_name" android:name="Badlibs"
                android:theme="@android:style/Theme.Black.NoTitleBar">
            <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>
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.android.vending.BILLING" />
</manifest>

3 комментария:

  1. Посмотрите здесь:
    http://habrahabr.ru/sandbox/76024/
    http://kluchnik-soft.livejournal.com/966.html
    http://freehabr.ru/blog/android/11287.html

    ОтветитьУдалить
  2. Отлично, спасибо большое автору! Вот только AdMob_Ad_Unit - это не Publisher ID, а Идентификатор рекламного блока (после того, как добавляем приложение и создаем рекламный блок для приложения, появляется его идентификатор)

    ОтветитьУдалить
  3. Admob это не очень хороший вариант, я заработал с Admob 57$ за месяц, а когда переключился на StartApp то заработал уже 175$ , с теми самими приложениями, улавливаете разницу друзья.
    Честно сказать я не только с Admob работал, я много рекламных сетей перепробовал такие как (AppWizh, Admob, Revmob, TapJoy, TapContext) но сейчас я использую только Startapp.
    Здесь я зарабатываю намного больше чем в других сетях. В среднем 500$ - 750$ USD в месяц . Доходность раза в 5 выше чем в других партнерках. Еще они дают хорошие бонусы для новых разработчиков.
    Я получить бонус 50$ в течение первых 1000 загрузок зарегистрировавшись по этой ссылке :
    http://startapp.com/rfhwarh
    Удачи!!!!

    ОтветитьУдалить