Google Admob SDK + PhoneGap | Phoxer.com
Google Admob SDK + PhoneGap
15/08/2013

Al momento de monetizar una aplicación con Phonegap tenemos que utilizar Admob, pero lamentablemente ya no permite realizar la integración de sus anuncios en sitios móviles osea en sitios que se ejecuten en WebBrowsers o WebView, para esto hay que utilizar la plataforma de anuncios web AdSense. El problema es que AdSense no permite integrar sus anuncios en aplicaciones nativas, aunque estas funcionen mediante una WebView, como es el caso de las aplicaciones PhoneGap / Cordova.

La única solución posible es integrar los anuncios de forma nativa con la SDK de Admob. Es un proceso algo más complejo que la integración mediante JavaScript y a penas hay documentación sobre la integración con una aplicación desarrollada con PhoneGap/Cordova, así que voy a explicar cómo hay que realizar esta integración.

PASO 1: Descargar al última versión de Admob SDK, descomprimelo y copiar el fichero GoogleAdMobAdsSdk-X.X.X.jar en la carpeta /libs/ de tu proyecto.

PASO 2: Averigua tu ID de aplicación de Admob



PASO 3: Instalación de librería
Añadir la librería al proyecto, para esto: click derecho sobre el proyecto > propiedades.



Ahora pulsa sobre Add JARs y selecciona el fichero GoogleAdMobAdsSdk-X.X.X.jar de la carpeta /libs/ de tu proyecto



PASO 4: Permisos
Declara la actividad de Admob en el fichero AndroidManifest.xml de tu proyecto, para esto, pega estas líneas justo encima de la etiqueta "application".

<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>



En el mismo fichero, añade los permisos necesarios para comprobar el estado de la conexión y para realizar conexiones a Internet, tendrás que añadir estas dos líneas justo antes de "manifest"

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


PASO 6: Integración Java
Vamos a incluir la vista de Admob en la aplicación, el problema es que Admob en Phonegap borra el registro de LocalStorage para evitar esto y poder usar LocalStorage normalmente vamos a utilizar un Handler.

public class MyAppActivity extends DroidGap {
    private Handler mHandler = new Handler();
    private AdView adView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
 
        mHandler.postDelayed(new Runnable() {
            public void run() {
                doAdMob();
            }
        }, 5000);         
    }
 
    private void doAdMob() {
        // Create the adView
        adView = new AdView(this, AdSize.BANNER, "YOUR PUB ID");
        // Lookup your LinearLayout - get the super.root
        LinearLayout layout = super.root;
        // Add the adView to it
        layout.addView(adView);
        // This centers the ads in landscape mode.        
        layout.setHorizontalGravity(android.view.Gravity.CENTER_HORIZONTAL);
        // Initiate a generic request to load it with an ad
        AdRequest request = new AdRequest();    
        adView.loadAd(request);                    
    }
}



Con estos sencillos pasos podrás mostrar tus anuncios de Admob de forma nativa en tus aplicaciones. El único problema que he detectado, es que la mayoría de anuncios nativos se activan con dos clicks, es decir, sólo te pagarán después de que el usuario haga click en el anuncio y confirme que quiere verlo.