Publicidad

Mostrar publicidad en cocos2d-x js Code IDE con Admob interstitialAd para Android

Paso a paso para mostrar publicidad interstitialAd de Admob

POR HUGO MIGUEZ EL 09/03/2015

Requisitos necesarios:
  • Descargar la librería de Admob: Utilizamos para este ejemplo la versión 6.2.1, aunque también es válida otra superior.
  • Descargar e instalar Eclipse y el SDK de Android: Nosotros utilizamos la extensión JUNO de Eclipse para este ejemplo.
  • Importar el proyecto: Para poder utilizar la librería de Admob es necesario importar el proyecto creado en Cocos2d-x js Code IDE a Eclipse. Sigue la siguiente tutorial para realizarlo sin problemas.
Pasos:
  • 1- Una vez importado el proyecto a eclipse, buscamos la carpeta 'libs' que se encuentra dentro de nuestro proyecto importado. En nuestro caso la ruta sería algo así:
    carpeta_nuestro_proyecto/frameworks/runtime-src/proj.android/libs
  • 2- Copiamos la librería de Admob en la carpeta anterior. En nuestro caso el archivo .jar de Admob es el siguiente 'GoogleAdMobAdsSdk-6.2.1.jar'
  • 3- Ahora buscamos la clase principal de nuestro proyecto. En el panel izquierdo de Eclipse (Package Explorer) desplegamos el proyecto y buscamos la carpeta 'src' en su interior encontraremos un paquete llamado org.cocos2dx.javascript, si lo desplegamos veremos el archivo principal .java llamado 'AppActivity.java'. Hacemos doble click para abrir el archivo.
  • 4- Modificamos el archivo AppActivity.java de la siguiente manera:
package org.cocos2dx.javascript;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.ArrayList;
import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.ActivityInfo;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import android.text.format.Formatter;
import android.util.Log;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.Toast;

//IMPORTAMOS LA LIBRERIA DE ADMOB
import com.google.ads.*;


public class AppActivity extends Cocos2dxActivity implements AdListener {
	private InterstitialAd interstitialAd;
	
	static String hostIPAdress='0.0.0.0';
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		if(nativeIsLandScape()) {
			setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
		} else {
			setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
		}
		
		//2.Set the format of window
		
		// Check the wifi is opened when the native is debug.
		if(nativeIsDebug())
		{
			getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
			if(!isNetworkConnected())
			{
				AlertDialog.Builder builder=new AlertDialog.Builder(this);
				builder.setTitle('Warning');
				builder.setMessage('Open Wifi for debuging...');
				builder.setPositiveButton('OK',new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
						finish();
						System.exit(0);
					}
				});
				builder.setCancelable(false);
				builder.show();
			}
		}
		hostIPAdress = getHostIpAddress();
	    interstitialAd = new InterstitialAd(this, 'ca-app-pub-4318003478893966/1605020525');
	    interstitialAd.setAdListener(this);
	    AdRequest adRequest = new AdRequest();
	    adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
	    interstitialAd.loadAd(adRequest);
	}
	
	public void onDestroy() {
		
	}
	public void onPresentScreen(Ad ad){
		
	}
	public void onDismissScreen(Ad ad){
		
	}
	public void onLeaveApplication(Ad ad){
		
	}
	public void onReceiveAd(Ad ad) {
		if(ad == interstitialAd) {
			interstitialAd.show();
	    }
	}
	public void onFailedToReceiveAd(Ad ad, AdRequest.ErrorCode error){
		
	}
   ...

Hemos realizado los siguientes cambios:

  • 1- Importar la librería de Admob
  • 2- Implemetar el Listener en la clase: public class AppActivity extends Cocos2dxActivity implements AdListener
  • 3- Crear los métodos de Listener:
public void onDestroy() {
		
	}
	public void onPresentScreen(Ad ad){
		
	}
	public void onDismissScreen(Ad ad){
		
	}
	public void onLeaveApplication(Ad ad){
		
	}
	public void onReceiveAd(Ad ad) {
		if(ad == interstitialAd) {
			interstitialAd.show();
	    }
	}
	public void onFailedToReceiveAd(Ad ad, AdRequest.ErrorCode error){
		
	}
  • 4- Declarar un nuevo objeto InterstitialAd en la clase principal de la clase:
public class AppActivity extends Cocos2dxActivity implements AdListener {
	private InterstitialAd interstitialAd;
  • 5- Crear y configurar el objeto InterstitialAd:
interstitialAd = new InterstitialAd(this, 'ca-app-pub-4318003478893966/1605020525');
	    interstitialAd.setAdListener(this);
	    AdRequest adRequest = new AdRequest();
	    adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
	    interstitialAd.loadAd(adRequest);

Finalmente tendremos que modificar el archivo manifiesto de nuestro proyecto:

  • 1- Abrimos el archivo AndroidManifiest.xml y copiamos el siguiente código dentro de y después la
<activity
    android:name='com.google.ads.AdActivity'
    android:screenOrientation='portrait'          
    android:configChanges='keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize'/>

El código final del archivo manifiesto debería ser algo así:

<?xml version='1.0' encoding='utf-8'?>
<manifest xmlns:android='http://schemas.android.com/apk/res/android'>
      package=com.xxx.tu_proyecto
      android:versionCode='1'
      android:versionName='1.0'
      android:installLocation='auto'

    <uses-sdk android:minSdkVersion='9'/>
    <uses-feature android:glEsVersion='0x00020000'/>

    <application android:label='@string/app_name'
                 android:icon='@drawable/icon'>

        <!-- Tell NativeActivity the name of our .so -->
        <meta-data android:name='android.app.lib_name' android:value='cocos2djs' />
        
        <activity android:name='org.cocos2dx.javascript.AppActivity'
                  android:label='@string/app_name'
                  android:screenOrientation='landscape'
                  android:theme='@android:style/Theme.NoTitleBar.Fullscreen'
                  android:configChanges='orientation'>

            <intent-filter>
                <action android:name='android.intent.action.MAIN' />
                <category android:name='android.intent.category.LAUNCHER' />
            </intent-filter>
        </activity>
        
        <activity
    android:name='com.google.ads.AdActivity'
    android:screenOrientation='portrait'           
    android:configChanges='keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize'/>
        
    </application>

    <supports-screens android:anyDensity='true'
                      android:smallScreens='true'
                      android:normalScreens='true'
                      android:largeScreens='true'
                      android:xlargeScreens='true'/>
					  
    <uses-permission android:name='android.permission.INTERNET'/>
    <uses-permission android:name='android.permission.CHANGE_NETWORK_STATE'/>
    <uses-permission android:name='android.permission.CHANGE_WIFI_STATE'/>
    <uses-permission android:name='android.permission.ACCESS_NETWORK_STATE'/>
    <uses-permission android:name='android.permission.ACCESS_WIFI_STATE'/>
    
  	<uses-permission android:name='android.permission.MOUNT_UNMOUNT_FILESYSTEMS'/>
 	<uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE'/>
</manifest>


Quizás te interese ...