在设备浏览器中打开InMobi iframe链接(PhoneGap构建)

6
我使用jQuery Mobile创建了一款移动应用,并通过PhoneGap Build v2.5为iOS和Android构建了该应用。我成功地使用inmobi的javascript api添加了广告。广告显示得很好,但当用户点击广告时,问题就来了,因为广告接管了应用程序。在Android上这不是什么问题,因为用户有返回按钮,但在iOS设备上,用户被卡住了,无法返回我的应用。
我已成功设置了应用中包含的所有外部链接,通过将所有url传递到此函数,以在设备的浏览器中打开:
function openNewBrowser(url) {
    window.open(encodeURI(url), '_system');
    return false;
}

但是,Inmobi广告位于我的应用程序中的一个iframe中,我无法控制它们如何传递URL。我也尝试绑定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;
    }
});

但是“else”从来没有被触发。Inmobi广告接管了应用程序,用户被迫关闭并重新启动应用程序才能恢复可用状态。我应该监听不同的事件吗?

这是我调用Inmobi广告的方式:

var inmobi_conf = {
    siteid : "*******mySiteId*******",
    slot : "15",
    manual: true,
    test: true,
    targetWindow: "_blank"
};

我曾尝试将“targetWindow”设置为_system,但是有效的参数只有“_blank”和“_top”。

是否有人知道如何使iFrame链接(无法设置为_system)在本机浏览器中打开,而不是接管应用程序或者防止inmobi广告接管应用程序?


使用InMobi时,如何在Android应用程序中集成广告? - Dom
我最终通过在config.xml中设置<preference name="exit-on-suspend" value="true" />来解决了这个问题。 这是一种可怕的解决方法,但这是我所拥有的最好的方法。 希望其他人能想出更好的解决方案。 - Dom
你好,你找到更好的解决方案了吗? - Louis
我没有。我基本上放弃了这个,正在等待Phonegap Build来托管AdMob插件。希望它能很快到来。 - Dom
这不是你问题的直接答案,但我放弃了尝试使用第三方广告系统。相反,我注册了cj.com并选择了我想要的广告。然后我构建了一些js将广告加载到我的应用程序中,然后每X秒切换可见广告。如果您需要,请告诉我。您只需要知道广告的URL和链接即可使用它。因此,它可以用于任何广告或任何内容。 - Phill Healey
1个回答

0
我最终通过在config.xml中设置<preference name="DisallowOverscroll" value="true" />来解决了这个问题。这是一个可怕的解决方法,但这是我所拥有的最好的方法。希望其他人能想出更好的方法。
使用虚拟的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"
};

参考资料


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接