javascript - example - Abra el enlace iframe de InMobi en el navegador del dispositivo(compilación del teléfono)
iframe video (1)
Creé una aplicación móvil usando jQuery Mobile y la desarrollé para iOS y Android a través de PhoneGap Build v2.5. A continuación, agregué exitosamente anuncios inmobi usando su api javascript. El anuncio se muestra bien, pero el problema surge cuando un usuario hace clic en el anuncio cuando el anuncio se hace cargo de la aplicación. Esto no es un problema en Android, ya que los usuarios tienen un botón Atrás, pero en los dispositivos iOS el usuario está atascado y no puede volver a mi aplicación.
He configurado correctamente todos los enlaces externos contenidos en mi aplicación para abrirlos en el navegador del dispositivo pasando todas las URL a esta función:
function openNewBrowser(url) {
window.open(encodeURI(url), ''_system'');
return false;
}
Pero el anuncio inmobi está dentro de un iframe en mi aplicación y no tengo control sobre cómo pasan sus url''s. También he intentado vincular jQuery Mobile para detectar todos los eventos de pagebeforechange y procesarlos en consecuencia usando:
$(document).bind("pagebeforechange", function(e, data) {
if(typeof data.toPage === ''object'' ||
data.toPage.indexOf("index.html#") >= 0) {
//internal URL so do nothing
} else {
//external URL so send to openNewBrowser
console.log(''page is external'');
openNewBrowser(data.toPage);
e.stopPropagation();
return false;
}
});
pero el "else" nunca se desconecta. El anuncio inmobi simplemente se hace cargo de la aplicación y el usuario se ve obligado a matar y reiniciar la aplicación a un estado utilizable. ¿Hay algún evento diferente que deba escuchar?
Así es como estoy llamando al anuncio inmobi:
var inmobi_conf = {
siteid : "*******mySiteId*******",
slot : "15",
manual: true,
test: true,
targetWindow: "_blank"
};
Yo (y he intentado) establecer la "targetWindow" en _system, pero los únicos parámetros válidos son "_blank" y "_top".
¿Alguien sabe de una manera de conseguir que los enlaces de iFrame (que no puede establecer en _system) se abran en el navegador nativo en lugar de hacerse cargo de la aplicación u obtener los anuncios de inmobi para que no se hagan cargo de la aplicación?
Terminé trabajando en torno a este problema configurando config.xml. Este es un trabajo terrible, pero es lo mejor que tengo. Con suerte, alguien más puede encontrar algo mejor.
Usar un iframe
ficticio como el objetivo también funcionaría:
/*
document.body.insertAdjacentHTML
("beforeend",
"<iframe id=''myframe'' width=''0'' height=''0''></iframe>"
)
*/
document.body.appendChild
(
document.createElement("iframe")
).setAttribute("id", "myframe")
var inmobi_conf = {
siteid : "*******mySiteId*******",
slot : "15",
manual: true,
test: true,
targetWindow: "myframe"
};
Referencias