我知道这里有很多关于PhoneGap的答案。我已经完成了所有这些,并没有一个解决方案有效。尽管如此,从各方面来看,其中任何一个都应该。许多答案都是如此陈旧,以至于我怀疑它们甚至是有效的。
我的应用程序工作,编译,运行正常。除了我不能让广告工作。我先尝试过AdMob。广告从未显示。所以我说,“好吧......我会自己做的。”如果点击广告导致打开新浏览器,那将会很棒。我认为一个简单的window.open()命令可以工作。但不是。这不会发生。我需要使用cordova插件来完成这项工作。
我在Adobe网站上使用PhoneGap-Build。
在我的config.xml中,我有:
<gap:plugin name="cordova-plugin-inappbrowser" spec="~3.0.0" source="npm" />
当我更新源代码时,我可以看到插件显示:
(来自PhoneGap页面)插件源版本安装平台cordova-plugin-inappbrowser npm~3.0.0 3.0.0 android,ios,winphone
大约30次左右尝试不同的变化,这是我上次尝试的JS代码:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
window.open = cordova.InAppBrowser.open;
}
function navToMobile(where){
var ref = cordova.InAppBrowser.open(where, '_system', 'location=yes');
//These two lines are incorrect and causing errors. The first doesn't do anything. The second is only supposed to be called to show and existing window. So the first line in this function is the only one that is needed.
navigator.app.loadUrl(where, { openExternal:true });
ref.show();
}
对“navToMobile(where)”的函数调用会在“where”的URL中发送。
根据之前的答案,该功能中有两种不同的方法应该可行。我希望他们两个都希望其中一个可以工作......
当它运行时,没有任何反应。我在模拟器上安装了应用程序,因此我可以看到日志猫。这告诉我“cordova不可用”。这告诉我,该库未被编译到应用程序中。
从我收集的内容来看,如果我在没有“构建PhoneGap”的情况下这样做,我会将cordova.js库作为我项目的一部分。但我认为这是config.xml中的引用是...
无论如何......我怀疑AdMob完全一样。我根据说明设置了所有内容,我在AdMob中创建了一个带有ID的新横幅广告......广告从未显示过。
如果有人有任何想法如何使这些方法中的任何一个工作,那将是伟大的。
编辑:我正在编辑这个答案,以显示最终的解决方案。
正如Dexter在他的回答中提到的那样,必须引用cordova.js文件,没有它,没有任何插件可以工作。如果他们碰巧在他们的文档中的任何地方提到这一点,那就太好了。他们从来没有提到引用是必要的,因为他们在编译时嵌入它。您不需要将.js作为项目的一部分。
随着这项工作,我得到了错误。我知道这可能是一个问题,因为我有3行不同的代码,并且不确定哪些代码可行。
我已在上面的代码中编辑了该函数以显示正确的调用。
听起来你的<script src="cordova.js"></script>
中没有index.html
,这个文件是由Cordova在构建期间添加的,并且是插件运行所必需的。