6

我使用 jQuery Mobile 创建了一个移动应用程序,并通过 PhoneGap Build v2.5 为 iOS 和 Android 构建了它。然后,我使用他们的 javascript api 成功添加了 inmobi 广告。广告显示得很好,但是当广告接管应用程序时用户点击广告时就会出现问题。这在 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;
    }
});

但“其他”永远不会被绊倒。inmobi 广告只是接管了应用程序,用户被迫终止并重新启动应用程序以恢复可用状态。我应该听其他事件吗?

以下是我如何称呼 inmobi 广告:

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

我会(并且尝试过)将“targetWindow”设置为_system,但唯一有效的参数是“_blank”和“_top”。

有谁知道让 iFrame 链接(您不能设置为 _system)在本机浏览器中打开而不是接管应用程序或让 inmobi 广告不接管应用程序的方法?

4

1 回答 1

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

参考

于 2014-06-13T06:18:40.993 回答