Advertisement
  1. Code
  2. Mobile Development
  3. Android Development

Cómo monetizar tus aplicaciones Android con AdMob

Scroll to top
Read Time: 11 min

() translation by (you can also view the original English article)

En este tutorial aprenderás cómo integrar AdMob para que puedas ganar dinero con esa increíble aplicación Android que programaste. Vamos, ¿quién no querría eso?. AdMob se encuentra entre las mayores plataformas de publicidad móvil del mercado, y es propiedad de Google.

Existen algunas maneras diferentes de monetizar tus aplicaciones en Android: descargas de paga, suscripciones de paga, compras en la aplicación y mostrando anuncios. Puedes combinarlas, pero es recomendable elegir solamente un modelo. En este tutorial aprenderás cómo monetizar tu aplicación mostrando anuncios.

Los tipos de anuncios que crearás en este tutorial son banners, anuncios intersticiales y anuncios nativos express. Explicaré cada uno de ellos y te mostraré cómo implementarlos en tu aplicación. Pero antes de eso veamos primero cómo integrar el SDK de Mobile Ads y cómo inicializarlo.

Crea un proyecto de Android Studio

En Android Studio crea un nuevo proyecto llamado MainActivity.

Android Studio add an activity dialogAndroid Studio add an activity dialogAndroid Studio add an activity dialog

Incluye el SDK de Mobile Ads

Para comenzar la integración de AdMob con tu aplicación, primero necesitarás incluir el SDK de Mobile Ads al archivo de módulo build.gradle de tu aplicación:

1
compile 'com.google.android.gms:play-services-ads:11.0.2'

Si vas a integrar Firebase a tu aplicación, entonces debes usar el SDK que es parte de Firebase:

1
compile 'com.google.firebase:firebase-ads:11.0.2'

Revisa algunos de nuestros tutoriales de Firebase aquí en Envato Tuts+ si necesitas ayuda para iniciar con Firebase:

Asegúrate de sincronizar el proyecto después de añadirle los SDKs para descargar las bibliotecas de Internet en tu aplicación.

Inicializa MobileAds

Necesitas inicializar el SDK de Mobile Ads antes de poder cargar anuncios en tu aplicación Android, así que hazlo tan pronto como puedas. Vamos a crear una clase que extiende a la clase Application, y luego vamos a inicializar el SDK MobileAds en el método onCreate() de esa clase, ya que este método se invoca solamente una vez al ejecutar la aplicación.

1
import com.google.android.gms.ads.MobileAds;
2
import android.app.Application;
3
4
public class App extends Application {
5
6
    @Override
7
    public void onCreate() {
8
        super.onCreate();
9
        MobileAds.initialize(this, "ca-app-pub-3940256099942544/6300978111");
10
    }
11
}

El segundo argumento que se le proporciona al método estático initialize() de la clase MobileAds debe ser el ID de aplicación de AdMob que obtuviste cuando te registraste con AdMob. En este caso estamos usando el ID de aplicación público proporcionado por Google para fines de demostración.

Modifica el archivo manifiesto

Necesitamos agregar la clase application que creamos en el atributo name de la etiqueta application en nuestro archivo AndroidManifest.xml.

1
 <application
2
    android:name=".App">
3
</application>

Estando dentro de este archivo, asegúrate de incluir el permiso INTERNET para que los anuncios móviles de Google puedan ejecutarse.

1
<!-- Include required permissions for Google Mobile Ads to run. -->
2
<uses-permission android:name="android.permission.INTERNET"/>
3
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

En el siguiente fragmento de código añadimos AdActivity a nuestro archivo AndroidManifest.xml dentro de la etiqueta application.

1
<activity android:name="com.google.android.gms.ads.AdActivity"
2
          android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
3
          android:theme="@android:style/Theme.Translucent" />

Este activity es proporcionado por el SDK. Es útil en los banners para desplegar el anuncio y que sea visualizado cuando el usuario haga clic en él, mientras que para un anuncio intersticial se usa para mostrar el anuncio cuando el usuario haga clic en él.

1. Anuncios tipo banner

Los anuncios tipo banner cubren una parte de la pantalla actualmente visible. En otras palabras, cualquier contenido que se encuentre en tu aplicación y en el anuncio será mostrado en conjunto en la pantalla. Esto mejora la experiencia de los usuarios, ya que éstos pueden seguir usando tu aplicación mientras el anuncio se encuentra visible, a diferencia de un anuncio intersticial (espera, hablaremos de eso en breve). Toma en cuenta que un anuncio tipo banner puede ser texto o una imagen.

Veamos cómo implementar un anuncio tipo banner.

Incluye un anuncio tipo banner en tu diseño

AdView es un ViewGroup personalizado que contendrá al anuncio tipo banner, así que necesitamos editar nuestro archivo de diseño activity_banner_ad.xml para incluir esta vista.

1
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
2
                xmlns:ads="http://schemas.android.com/apk/res-auto"
3
                xmlns:tools="http://schemas.android.com/tools"
4
                android:layout_width="match_parent"
5
                android:layout_height="match_parent"
6
                tools:context="com.chikeandroid.tutsplus_admob.MainActivity">
7
8
    <TextView android:text="Hello World"
9
              android:layout_width="wrap_content"
10
              android:layout_height="wrap_content" />
11
12
    <com.google.android.gms.ads.AdView
13
            android:id="@+id/adView"
14
            android:layout_width="wrap_content"
15
            android:layout_height="wrap_content"
16
            android:layout_centerHorizontal="true"
17
            android:layout_alignParentBottom="true"
18
            ads:adSize="BANNER"
19
            ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
20
    </com.google.android.gms.ads.AdView>
21
</RelativeLayout>

Vamos a definir el tamaño del AdView usando el atributo ads:adSize y asignándole el valor BANNER. Otras alternativas disponibles son LARGE_BANNERFULL_BANNERSMART_BANNER, etc.

El atributo ads:adUnitId de AdView está configurado con el valor de un anuncio de prueba proporcionado por Google. ¡Tendrás que actualizar este valor con un anuncio asociado con tu cuenta si verdaderamente quieres ganar dinero con tus anuncios!

El ID del anuncio identifica la ubicación de un anuncio y puedes encontrarlo en la consola de administración de AdMob. Este ID le indicará a AdMob el tipo de anuncio que debe mostrarse en tu aplicación, así como el formato de visualización (imagen, texto o video).

Carga el anuncio

Para que finalmente podamos mostrar el anuncio, necesitamos llevar a cabo una solicitud y luego mostrarlo en el AdView que creamos anteriormente en la clase BannerAdActivity.

1
import com.google.android.gms.ads.AdRequest;
2
import com.google.android.gms.ads.AdView;
3
import android.os.Bundle;
4
import android.support.v7.app.AppCompatActivity;
5
6
public class BannerAdActivity extends AppCompatActivity {
7
    private AdView mAdView;
8
9
    @Override
10
    protected void onCreate(Bundle savedInstanceState) {
11
        super.onCreate(savedInstanceState);
12
        setContentView(R.layout.activity_main);
13
        mAdView = (AdView) findViewById(R.id.adView);
14
        AdRequest adRequest = new AdRequest.Builder()
15
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
16
                .build();
17
        mAdView.loadAd(adRequest);
18
    }
19
}

Hicimos una solicitud de anuncio creando una instancia de AdRequest usando el constructor. Luego usamos el método addTestDevice(), enviándole el id de un dispositivo como argumento para recibir anuncios de prueba en el dispositivo, que en nuestro caso es el emulador. Finalmente invocamos al método loadAd() de AdView que recibe la instancia de AdRequest y luego carga el anuncio en un hilo que se ejecuta en segundo plano (para no bloquear el hilo UI/main).

Probando la aplicación

En este punto podemos ejecutar nuestro proyecto y ver el resultado.

App showing banner adApp showing banner adApp showing banner ad

En la captura de pantalla anterior podemos ver que nuestro anuncio tipo banner de prueba se muestra debajo de la vista. Ahora interactúa con el anuncio haciendo clic en él.

Escuchando para detectar eventos de anuncios con AdListener

Ahora exploremos los eventos o devoluciones de llamadas que podemos observar en un anuncio. Estos son los eventos disponibles:

  • onAdLoaded(): este método se ejecuta cuando se obtiene el anuncio.
  • onAdOpened(): este método se invoca cuando se abre el anuncio.
  • onAdClosed(): este método se ejecuta cuando se cierra el anuncio.
  • onAdLeftApplication(): este método es invocado cuando el usuario ha salido de la aplicación.
  • onAdFailedToLoad(int errorCode): este se ejecuta cuando falla una solicitud para el anuncio. El código puede ser uno de entre ERROR_CODE_NETWORK_ERROR, ERROR_CODE_INVALID_REQUESTERROR_CODE_NO_FILLERROR_CODE_INTERNAL_ERROR.
1
// ...

2
    @Override
3
    protected void onCreate(Bundle savedInstanceState) {
4
        // ... 

5
        mAdView.setAdListener(new AdListener() {
6
        
7
                    @Override
8
                    public void onAdLoaded() {
9
                        super.onAdLoaded();
10
                        Toast.makeText(MainActivity.this, "onAdLoaded()", Toast.LENGTH_SHORT).show();
11
                    }
12
        
13
                    @Override
14
                    public void onAdOpened() {
15
                        super.onAdOpened();
16
                        Toast.makeText(MainActivity.this, "onAdOpened()", Toast.LENGTH_SHORT).show();
17
                    }
18
        
19
                    @Override
20
                    public void onAdClosed() {
21
                        super.onAdClosed();
22
                        Toast.makeText(MainActivity.this, "onAdClosed()", Toast.LENGTH_SHORT).show();
23
                    }
24
        
25
                    @Override
26
                    public void onAdFailedToLoad(int i) {
27
                        super.onAdFailedToLoad(i);
28
                        Toast.makeText(MainActivity.this, "onAdFailedToLoad()", Toast.LENGTH_SHORT).show();
29
                    }
30
        
31
                    @Override
32
                    public void onAdLeftApplication() {
33
                        super.onAdLeftApplication();
34
                        Toast.makeText(MainActivity.this, "onAdLeftApplication()", Toast.LENGTH_SHORT).show();
35
                    }
36
            });
37
    }
38
39
    @Override
40
    public void onPause() {
41
        // This method should be called in the parent Activity's onPause() method.

42
        if (mAdView != null) {
43
            mAdView.pause();
44
        }
45
        super.onPause();
46
    }
47
    
48
    @Override
49
    public void onResume() {
50
        super.onResume();
51
        // This method should be called in the parent Activity's onResume() method.

52
        if (mAdView != null) {
53
            mAdView.resume();
54
        }
55
    }
56
    
57
    @Override
58
    public void onDestroy() {
59
        // This method should be called in the parent Activity's onDestroy() method.

60
        if (mAdView != null) {
61
            mAdView.destroy();
62
        }
63
        super.onDestroy();
64
    }
65
}

Después de añadir el método de escucha, ejecuta el proyecto nuevamente e interactúa con el anuncio. Observa cómo se ejecutan los eventos revisando los mensajes toast que creamos.

2. Anuncios intersticiales

Hemos visto lo fácil que es mostrar un anuncio tipo banner. Ahora veamos cómo crear anuncios intersticiales.

Los anuncios intersticiales son aquellos que cubren toda la pantalla de tu aplicación, sin dejar espacio para mostrar otras vistas de la misma (como veremos pronto). Dado que estos ocupan la pantalla completa y también tardan algo de tiempo en cargar si la red es lenta, necesitas tener cuidado para no causar molestias a tus usuarios. Así que, de forma ideal, estos anuncios intersticiales deben mostrarse durante pausas naturales de tu aplicación, por ejemplo entre niveles en un juego, y no cuando los usurios estén en medio de alguna otra tarea.

1
import com.google.android.gms.ads.AdListener;
2
import com.google.android.gms.ads.AdRequest;
3
import com.google.android.gms.ads.InterstitialAd;
4
import android.os.Bundle;
5
import android.support.v7.app.AppCompatActivity;
6
import android.widget.Toast;
7
8
public class InterstitialAdActivity extends AppCompatActivity {
9
    private InterstitialAd mInterstitialAd;
10
11
    @Override
12
    protected void onCreate(Bundle savedInstanceState) {
13
        super.onCreate(savedInstanceState);
14
        setContentView(R.layout.activity_main);
15
        loadInterstitialAd();
16
    }
17
18
    private void loadInterstitialAd() {
19
        mInterstitialAd = new InterstitialAd(this);
20
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
21
        mInterstitialAd.setAdListener(new AdListener() {
22
23
            @Override
24
            public void onAdLoaded() {
25
                super.onAdLoaded();
26
                Toast.makeText(MainActivity.this, "onAdLoaded()", Toast.LENGTH_SHORT).show();
27
                if(mInterstitialAd.isLoaded()) {
28
                    mInterstitialAd.show();
29
                }
30
            }
31
32
            @Override
33
            public void onAdFailedToLoad(int i) {
34
                super.onAdFailedToLoad(i);
35
                Toast.makeText(MainActivity.this, "onAdFailedToLoad()", Toast.LENGTH_SHORT).show();
36
            }
37
        });
38
39
        AdRequest adRequest = new AdRequest.Builder().build();
40
        mInterstitialAd.loadAd(adRequest);
41
    }
42
}

En el código anterior declaramos e incializamos una instancia de la clase InterstitialAd en la clase InterstitialAdActivity. Configuramos el id del anuncio enviando el id proporcionado por Google como único argumento al método setAdUnitId().

Al igual que lo que hicimos para el anuncio tipo banner, queremos escuchar eventos del anuncio, por lo que configuramos un método escucha para ejecutar a los métodos sobrecargados onAdLoaded() y onAdFailedToLoad(int i). Hacemos una solicitud de anuncios creando una instancia de la clase AdRequest usando su constructor y luego invocando al método loadAd(), pasando esta solicitud como argumento al método. Usamos el método isLoaded() para determinar el momento en el que el anuncio ha sido cargado y luego invocamos al método show() para finalmente mostrarlo.

También puedes añadir un AdListener como lo hicimos para el anuncio tipo banner.

Prueba el anuncio

Ahora, en este punto podemos ejecutar la aplicación y ver el resultado.

App showing interstitial adApp showing interstitial adApp showing interstitial ad

En la captura de pantalla anterior puedes ver que nuestro anuncio intersticial de prueba se está mostrando.

3. Anuncios nativos express

Los anuncios nativos express te dan a ti (el editor) la habilidad de personalizar el aspecto de los anuncios para que se adapten de forma natural a tu aplicación. Esta personalización se lleva a cabo definiendo plantillas CSS en las que defines tus propias fuentes, colores, tamaños, etcétera, desde tu cuenta de AdMob. Sin embargo, no puedes cambiar las imágenes, descripciones ni títulos, éstos son establecidos por los anunciantes.

Los anuncios personalizados pueden ser mostrados en tu aplicación usando un NativeExpressAdView.

Incluye NativeExpressAdView en tu diseño

A continuación incluímos el NativeExpressAdView, que es un ViewGroup, en nuestro archivo de diseño. También definimos el android:layout_height y el android:layout_width con el valor wrap_content. El ads:adSize será "320x300" y usaremos el id del anuncio NativeExpress proporcionado por Google (solamente para fines de demostración).

1
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2
                xmlns:ads="http://schemas.android.com/apk/res-auto"
3
                xmlns:tools="http://schemas.android.com/tools"
4
                android:layout_width="match_parent"
5
                android:layout_height="match_parent"
6
                tools:context="com.chikeandroid.tutsplus_admob.BannerAdActivity">
7
8
    <TextView
9
            android:layout_width="wrap_content"
10
            android:layout_height="wrap_content"
11
            android:text="Native Express Ad!" />
12
13
    <com.google.android.gms.ads.NativeExpressAdView
14
            android:id="@+id/adView"
15
            android:layout_width="wrap_content"
16
            android:layout_height="wrap_content"
17
            android:layout_centerHorizontal="true"
18
            android:layout_alignParentBottom="true"
19
            ads:adSize="320x300"
20
            ads:adUnitId="ca-app-pub-3940256099942544/2177258514">
21
    </com.google.android.gms.ads.NativeExpressAdView>
22
23
</RelativeLayout>

Cargando el anuncio

A continuación construimos nuestro AdRequest y luego comenzamos a cargar el anuncio para mostrarlo. También agregaremos código para responder a las devoluciones de llamadas del ciclo de vida del Activity. También puedes añadir un AdListener si quieres, de la misma forma en la que lo hicimos para el anuncio tipo banner.

1
import com.google.android.gms.ads.AdRequest;
2
import com.google.android.gms.ads.NativeExpressAdView;
3
import android.os.Bundle;
4
import android.support.v7.app.AppCompatActivity;
5
6
public class NativeExpressAdActivity extends AppCompatActivity {
7
    NativeExpressAdView mNativeExpressAdView;
8
9
    @Override
10
    protected void onCreate(Bundle savedInstanceState) {
11
        super.onCreate(savedInstanceState);
12
        setContentView(R.layout.activity_native_ad);
13
14
        mNativeExpressAdView = (NativeExpressAdView) findViewById(R.id.adView);
15
16
        AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
17
        adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
18
19
        mNativeExpressAdView.loadAd(adRequestBuilder.build());
20
    }
21
22
    @Override
23
    public void onResume() {
24
        super.onResume();
25
        mNativeExpressAdView.resume();
26
    }
27
28
    @Override
29
    public void onPause() {
30
        mNativeExpressAdView.pause();
31
        super.onPause();
32
    }
33
34
    @Override
35
    public void onDestroy() {
36
        mNativeExpressAdView.destroy();
37
        super.onDestroy();
38
    }
39
}

Prueba la aplicación

¡Eso es todo! ahora puedes ejecutar la aplicación y ver tu anuncio nativo express en acción. 

App showing NativeExpressAdView App showing NativeExpressAdView App showing NativeExpressAdView

Crea tu propia cuenta de AdMob

Ahora que hemos aprendido acerca de los diferentes tipos de anuncios, puedes seguir adelante e integrarlos a tu aplicación. Para comenzar a mostrar anuncios reales y ganar dinero necesitarás una cuenta de AdMob, con ids de anuncios reales que estén vinculados a anuncios reales de anunciantes. ¡Solamente visita el sitio web de AdMob para registrarte!

AdMob website home screenAdMob website home screenAdMob website home screen

Conclusión

En este tutorial aprendiste acerca de AdMob y cómo integrar diferentes formatos de anuncios del mismo, tales como anuncios tipo banner, intersticiales y nativos express en Android.

Para saber más sobre AdMob en Android consulta la documentación oficial. Y mientras tanto ¡revisa algunos de nuestros otros cursos y tutoriales acerca del desarrollo de aplicaciones en Android!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.