20 marzo 2014

Agregando publicidad en Apps Android

Hemos decidido monetizar algunas aplicaciones que tenemos en Google Play, para hacerlo básicamente hemos seguido las instrucciones de Cómo Empezar.

El único problema que hemos tenido ha sido al actualizar el SDK para tener la última versión disponible. Acualizar el SDK en si no supone ningún problema, pero después de hacerlo hay que actualizar el ADT, el problema es que al hacerlo mediante Help > Check for updates en Eclipse, dice que no hay actualizaciones. Si no hacemos nada más, al intentar importar un proyecto o librería (como nos pasaría posteriormente al intentar agregar la libreria de Google Play Services). Al llegar al último paso y darle al botón de finalizar. Eclipse no hace nada, y hacemos click una y otra vez y nada.

La solución vino como siempre de StackOverflow, simplemente hay que ir a Help > install new software y añadir esta url:  https://dl-ssl.google.com/android/eclipse/

A parte de este problema todo ha ido como la seda. El resumen es como sigue:
1.- Actualizamos el SDK. En Eclipse Window > SDK Manager elegimos la última API disponible (en el momento de escribir esto API19).
2.- Actualizamos el ADT. Como hemos visto Help > Check for updates, no nos ha funcionado, sin embargo Help > install new software, hemos añadido la url y probablemente la próxima vez no haya problema.

3.- Configurar el google play services SDK tal como se explica en en la web de developers.
   3.1.- Window > SDK Manager en extras encontramos google play services.
   3.2.- importamos el contenido de lo que acabamos de instalar al workspace de eclipse: File > Importar... navegamos al directorio importar (marcamos la casilla de copiar).
  3.3 si queremos un AVD para poder comprobarlo tendriamos que instalar Google APIs para API17 o superior (como eso ya lo teníamos hecho, en el paso 1, pues nada).


4.- En nuestra aplicación configuramos el target en project.properties para android-13
5.- Ponemos en el AndroidManifest.xml el atributo android:minSdkVersion a 10 (API10 que equivale a android 2.3.3).
  android:minSdkVersion="10"
  android:targetSdkVersion="19" />
6.- Añadimos el proyecto de biblioteca de servicios de Google Play y hacemos referencia a él.
   6.1.- Hacemos clic con el botón derecho en el proyecto de la aplicación en Eclipse y seleccionamos Properties (Propiedades).
   6.2.- Seleccionamos Android y, a continuación, hacemos clic en Add... (Añadir). Buscamos el proyecto google-play-services_lib y seleccionamos OK (Aceptar) para añadir la biblioteca de servicios de Google Play.
   6.3.- El proyecto ahora hace referencia a la biblioteca de servicios de Google Play

7.- Añadimos una etiqueta meta-data en Android manifest.xml  
<?xml version="1.0" encoding="utf-8"?>
<manifest   xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company"
android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon
android:label="@string/app_name"
android:debuggable="true">
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity   android:label="@string/app_name" android:name="BannerExample">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>

8.- Declaramos com.google.android.gms.ads.AdActivity en Android manifest.xml
lt;?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company"
android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true">
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity android:label="@string/app_name" android:name="BannerExample">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
</manifest>

9.- Configuramos los permisos de red en Android manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company"
android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true">
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity android:label="@string/app_name" android:name="BannerExample">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>

10.- Como nuestra publicidad es tipo banner seguimos las instrucciones de Banners I. Nosotros hemos optado por añadirlo en el XML.
10.1.- Añadimos el View "Adview"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"> 
<com.google.android.gms.ads.AdView
android:id="@+id/adView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-xxxxxxxxxxxxxxxxxxx" />
.
.
.
<LinearLayout>


10.2.- Modificamos la activity para buscar y cargar anuncios.

.
.
.
import com.google.android.gms.ads.*;
.
.
.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Buscar AdView como recurso y cargar una solicitud.
AdView adView = (AdView)findViewById(R.id.adView1);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
.
.
.
}


11.- Deberíamos poder compilar.

12.- Hay que acordarse que si la aplicación ya estaba publicada 8como en nuestro caso). Hay que verisonarla es decir en el android manifest hay que añadir:
android:versionCode="2"
android:versionName="1.1" >


Y hasta aquí por hoy.

1 comentario:

Javier dijo...

Muchas gracias por compartirlo, por fín he podido implementar el banner.

Lo has explicado mejor que en la propia página de Google Developers.

Un saludo.