我使用jQuery Mobile创建了一个移动应用程序,并通过PhoneGap Build v2.5为iOS和Android构建了它。然后我使用他们的javascript api成功添加了inmobi广告。广告显示效果不错,但是当广告接管应用时用户点击广告时会出现问题。这不是Android中的问题,因为用户有后退按钮,但在iOS设备上,用户卡住了,无法返回我的应用程序。
我已成功设置我的应用中包含的所有外部链接,以便通过将所有网址传递给此功能在设备的浏览器中打开:
function openNewBrowser(url) {
window.open(encodeURI(url), '_system');
return false;
}
但是inmobi广告在我的应用中的iframe内部,我无法控制他们如何传递他们的网址。我还尝试绑定jQuery Mobile以捕获所有pagebeforechange事件并使用以下方式处理它们:
$(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;
}
});
但“其他”永远不会被绊倒。 inmobi广告只是接管应用程序,用户被迫杀死并重新启动应用程序回到可用状态。我应该听一个不同的事件吗?
以下是我如何调用inmobi广告:
var inmobi_conf = {
siteid : "*******mySiteId*******",
slot : "15",
manual: true,
test: true,
targetWindow: "_blank"
};
我会(并试图)将“targetWindow”设置为_system,但唯一有效的参数是“_blank”和“_top”。
有没有人知道如何获取iFrame链接(您无法设置为_system)在本机浏览器中打开而不是接管应用程序或获取inmobi广告以不接管应用程序?
答案 0 :(得分:0)
我最后通过在config.xml中设置解决了这个问题。这是一个可怕的解决方案,但它是我所拥有的最好的。希望其他人可以提出更好的东西。
使用虚拟iframe
作为目标也可以:
/*
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"
};
<强>参考强>