¿Anuncios en apps?

Started by josebita, December 07, 2012, 02:52:27 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

Quote from: KeoH on December 08, 2012, 07:49:41 PM
Jaaaaar Joseba me das una alegria!! xDD porque te queria preguntar sobre esto desde hace tiempo jajajajaja de arte.
Me alegro; en cuanto pueda añado el soporte para esto al packager.

Instrucciones -sobre todo para Pixel- para añadir anuncios cuando uno compila a mano el apk:

       
  • Entrar en http://www.google.com/ads/admob/ y hacerte una cuenta de AdMob, si no la tienes.
  • Añadir una aplicación con "Add Site/App"
  • Desde el panel ppal poner el ratón encima de la aplicación creada y pinchar en "Manage Settings"
  • Apuntar el código "Publisher ID"
  • Actualizar el código Java de SDLActivity.java desde éste.
  • Actualizar el fichero MyGame.java (o como se llame en vuestro código) con éste.
  • En este último fichero, reemplazar en la línea 25 el texto "MY_AD_UNIT_ID" por vuestro "Publisher ID" (entrecomillado, es string).
  • Abrir el SDK de Google y aseguraos de que habeis instalado la parte de Admob (sección "Extras") y el SDK para alguna versión de android superior o igual a la 13.
  • Cambiar la versión de Android para la que compileis en project.properties a la que hayais descargado.
  • Dentro del directorio del SDK tendreis el fichero extras/google/admob_ads_sdk/GoogleAdMobAdsSdk-6.2.1.jar Copiadlo a la carpeta "libs" de vuestro proyecto.
  • Dentro del AndroidManifest.xml añadís las siguiente líneas dentro del tag <application> y tras la de <activity> que ya existe:
            <activity android:name="com.google.ads.AdActivity"
                  android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

  • En el mismo fichero añadís los siguientes permisos:
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • El AndroidManifest.xml os debe quedar algo similar -aunque no estrictamente igual- a éste.
  • Debería estar listo, compilad como siempre y si falla algo me avisais y vemos qué pasa, aunque si os falla probablemente sea porque se me ha olvidado reproducir algún paso...

Sé que parece muy complicado, pero es porque lo he puesto paso a paso; en realidad es modificar cuatro ficheros. Cuando tenga tiempo haré que sea el packager el que se encargue de todo.

panreyes

Gracias, pero tampoco era necesario tenerlo dedicado a mí xD


Está claro lo que hay que hacer. Yo lo intenté hace un tiempo, pero sólo conseguía sacar los ads o el juego, pero no las dos cosas a la vez xD

Futu-block

joé, quiero asociarme con alguien para que saque mis juegos y/o apps a android de pago...
y vamos a medias ;)

josebita

WIP:



Cuando lo actualice subiré también una versión compilada para windows que muestre la terminal, de forma que hacer el debugging de esos errores que aparecen sea más sencillo.

josebita

#19
¡Recién empaquetado con el packager!
http://dl.dropbox.com/u/3022394/testads.apk


Voy a subirlo al PPA.

imitador

Perdonad, no he entendido muy bien como hacer para que mi aplicacion pueda contener anuncios, es que mi aplicacion esta hecha con bennugd y compilada con el packger, y parace que ese codigo es para eclipse, alguien me puede decir como ponerlo con bennud? por cierto os van los juegos fluidos con en android cuando los compilais, o se puede hacer con otro compilador mejor que el packager?

josebita

Bueno, desde hace algún tiempo los anuncios ya no se hacen desde un API específico sino que los han integrado en los "Google Play Services".

Aquí os dejo un ejemplo de código Java para implementar los anuncios de esta nueva forma:
package org.bennugd.samplegame;

import org.libsdl.app.SDLActivity;
import android.os.Bundle;
import com.google.android.gms.ads.*;
import android.widget.RelativeLayout;

/*
* A sample wrapper class that just calls SDLActivity
*/

public class MyGame extends SDLActivity {
    private AdView adView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Create the adView.
        adView = new AdView(this);
        adView.setAdUnitId("ca-app-pub-[NÚMEROS, NÚMEROS]");
        adView.setAdSize(AdSize.BANNER);

        // Make sure the params are right:
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT );
        params.addRule(RelativeLayout.ABOVE);

        // Add the adView to it.
        super.mLayout.addView(adView, params);
        super.mLayout.requestLayout();

        // Initiate a generic request.
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .build();

        // Load the adView with the ad request.
        adView.loadAd(adRequest);
        super.mLayout.requestLayout();
    }

    protected void onPause() {
        super.onResume();
        if(adView != null) {
            adView.resume();
        }
    }

    protected void onDestroy() {
        if(adView != null) {
            adView.destroy();
        }
        super.onDestroy();
    }
}



Espero que os ayude. Si teneis algún problema avidas, que igual se me ha olvidado algo.

Odif

Entonces, ¿las instrucciones para hacer esto que diste anteriormente ya están obsoletas? (Modificar el AndroidManifest).
Este nuevo código de Java me pierde, imagino que requiere conocimientos externos a Bennu, o ¿qué hacemos con ello?

Perdón por venir así de noob, pero ando un poco perdido con estas cosas (imagino que no soy el único). Que conste que aprecio mucho el gran trabajo que estás haciendo! :)

josebita

El AndroidManifest.xml sigues teniendo que cambiarlo, pero ya no hace falta incluir el .jar del SDK de Admob en la librería "lib" del paquete.

Y sí, es para modificar el código Java, no el de Bennu.

imitador

#24
Yo he introducido el codigo nuevo en: com\nombreempresa\plantilla\Plantilla.java, pero no compila, no se si es porque estoy equivocado de archivo o tengo que crear un archivo nuevo, lo que me he fijado esque si dejo el archivo tal como venia sin tocar e introduzco los nuevos import:  import com.google.android.gms.ads.*;
import android.widget.RelativeLayout; con esto ya no me genera el apk. alguna solucion?Que estoy haciendo mal?

josebita

Ponme el error que te genera, pero asegúrate de tener instalado (mediante el Android SDK Manager) las APIs de "Google Play Services" (abajo del todo).

imitador

Hay dejo la imagen de los errores al compilar,la dejo como archivo de descarga porque no se ponerla de otra forma, con lo de "abajo del todo", donde te refieres? haber yo instale el sdk en el packager, en el eclipse tambien se que esta instalao, en C:\devBennu\adt-bundle-windows-x86_64-20131030\sdk, hay esta eso con sus archivos correspondientes, y bueno ya no se mas, lo unico que se que en la pixplantilla tambien tienen sus archivos que ya venian, seguro que toy escoñao y no he copia algo que deberia,jajaja

Odif

Yo estoy teniendo el mismo problema, que parece ser con el "com.google.android.gms.ads" que no lo encuentra al compilar.
No se si se nos esta pasando copiar la libreria en alguna parte (Tampoco la tengo localizada).
Tengo instalados el API 16 de Android y todos los extras, incluyendo los Google Play Services

imitador


Odif

Bueno voy progresando (creo).

Imitador: lo que he hecho ha sido copiar la libreria "google-play-services.jar" asi como el archivo properties que encontraras en el sdk de Android en: sdk\extras\google\google_play_services\libproject\google-play-services_lib\libs
a la carpeta bennu/android/libs de la pixplantilla.
Haciendo esto al menos compila y ya no da error. Aunque el .apk resultante crashea nada mas iniciar la aplicacion.
No se si sera algo que estoy haciendo mal en codigo o que directamente lo que he hecho de copiar la libreria es una chapuza XD

Pero bueno, si te sirve prueba y a ver que resultados obtienes ;)