在设备浏览器中打开InMobi iframe链接(phonegap build)

时间:2013-05-11 14:14:42

标签: javascript html jquery-mobile phonegap-build inmobi

我使用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广告以不接管应用程序?

1 个答案:

答案 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"
};

<强>参考