Durante un tiempo he estado desarrollando una app para Android usando SL4A y Python. Una vez desarrollada quería probar el tema de meter publicidad a la misma usando Admob.
Con SL4A uso HTML como interfaz gráfica de la aplicación y por tanto tengo que usar javascript para meter la publicidad, como si de una aplicación web se tratase.
El banner se muestra correctamente y lo puedo colocar donde quiera, el problema viene a la hora de pinchar en la publicidad, ya que al ser un webview me abre la publicidad en la propia ventana de la aplicación perdiendo toda la interfaz de la misma y quedandome sin acceso a ella.
Después de varías pruebas y un poco de ingeniería inversa sobre el javascript de Admob he descubierto la solución para que la publicidad se abra en una ventana del navegador y no en la interfaz de mi aplicación.
Primero configuramos Admob para lanzarlo nosotros de manera manual:
var admob_vars = { pubid: '2121324214214', // publisher id bgcolor: '000000', // background color (hex) text: 'FFFFFF', // font-color (hex) manual_mode: true, test: false// test mode, set to false to receive live ads };
Después pedimos la publicidad:
var ad = _admob.fetchAd(document.getElementById('admob_ad'));
Y por último redefinimos la función gotourl:
_admob.gotourl = function() { var droid = new Android(); droid.view(arguments[0]); };
Con el código anterior conseguimos que la acción por defecto a la hora de pinchar en el banner sea la de abrir la URL con el navegador y no la de cargar la URL en la página actual, que en nuestro caso es la interfaz gráfica.