我添加了 AdMob Plugin Pro到我的 Phonegap 应用程序。我按照示例代码并将以下代码放入我的应用程序主页中:
function onDeviceReady() {
var admobid = {};
if( /(android)/i.test(navigator.userAgent) ) {
admobid = { // for Android
banner: 'ca-pub-{key hidden}'
interstitial: 'ca-pub-{key hidden}'
};
} else if(/(ipod|iphone|ipad)/i.test(navigator.userAgent)) {
admobid = { // for iOS
banner: 'ca-pub-{key hidden}'
interstitial: 'ca-pub-{key hidden}'
};
}
if(window.AdMob) AdMob.prepareInterstitial( {adId:admobid.interstitial, autoShow:true} );
}
document.addEventListener('deviceready', onDeviceReady, false);
上面的代码有效,并且显示了插页式广告,但是当我尝试在另一个页面中再次调用 AdMob 时,问题发生了。我尝试了几种方法,但都不起作用。
以下是我的应用程序的一些背景信息:
- 当用户单击链接时,我的应用程序将重新加载页面。例如,如果用户在主页中单击“设置”按钮,则整个页面将重新加载到“setting.html”
- 操作 DOM 和内容的脚本始终放在
<body>
的最后一行。
所以这是我尝试过的:
复制相同的
onDeviceReady()
和addEventListner()
上面并放入另一个页面。- 我发现 deviceready 事件在第二页中没有再次触发。因此,当然不会再显示插页式广告。
只需复制
AdMob.prepareInterstitial( {adId:admobid.interstitial, autoShow:true}
到新页面并在页面加载后执行- 我发现 AdMob 变成了
undefined
- 我发现 AdMob 变成了
所以我想知道我是否错过了什么或者我做错了什么?
谢谢!
最佳答案
我是 this cordova-admob plugin 的作者.
如@Simon stated before ,您最好的机会是迁移到 SPA。也就是说,如果这是不可能的,也许您可以尝试一个丑陋的解决方法,但这很大程度上取决于您如何实现应用程序:
尝试拦截 index.html
中的每个链接并尝试通过 ajax 加载它。通过 ajax 加载后,您可以加载 index.html
正文中的内容。确保评估新内容中的每个脚本。在这里您可以找到有关我如何实现的示例:http://plnkr.co/edit/ew21klKYRcfvjX8wrAY1
它是用纯 JavaScript 实现的,但如果您使用 jQuery,那么它可以让您的生活更轻松 $(document.body).load(...)
关于javascript - 重定向到 Phonegap 中的新页面后,AdMob 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37246436/