我正在尝试为 Cordova 使用 ZeroConf 插件。我以前从未使用过任何 Cordova 插件。
这些是我执行的步骤:
cordova create myApp
cordova platform add android
cordova platform add ios
cordova platform add browser
cordova plugins add https://github.com/cambiocreative/cordova-plugin-zeroconf
之后,我更改了默认的 onDeviceReady
函数,使“index.js”文件(在 myApp/www/
目录中)如下所示:
var app = {
...
onDeviceReady: function() {
app.receivedEvent('deviceready');
if(cordova && cordova.plugins) {
console.log('cordova.plugins is available');
} else {
console.log('cordova.plugins NOT available');
}
},
...
};
app.initialize();
不幸的是,它总是记录“cordova.plugins 不可用”。我首先检查了 cordova
是否存在,但是 cordova.plugins
是未定义的。请注意,我正在浏览器中对此进行测试( cordova run browser
)以找到问题,一旦 cordova.plugins
将不再是未定义的,我将能够使用ZeroConf插件。
我搜索了几个小时,阅读了很多类似的主题,但没有一个对我有帮助。
我试过的:
cordova plugin ls
–> ZeroConf插件存在com.cambiocreative.cordova.plugin.zeroconf 1.0.9 "Cordova ZeroConf Plugin"
验证
index.html
加载cordova.js
脚本我编辑了
config.xml
文件(在myApp/www/config.xml
中)并添加了<plugin name="com.cambiocreative.cordova.plugin.zeroconf" version="1" />
,但这没有帮助。也试过<feature name="ZeroConf"><param name="android-package" value="com.cambiocreative.cordova.plugin.ZeroConf" /><param name="onload" value="true" /></feature>
没有成功。
这是我在 index.html
中包含脚本的顺序(在 myApp/www/index.html
中):
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
编辑:我尝试直接从“zeroconf.js”文件访问 ZeroConf
对象,但没有成功。
我编辑了 onDeviceReady
功能:
onDeviceReady: function() {
app.receivedEvent('deviceready');
var el = document.getElementById("zcOK");
if(typeof ZeroConf !== 'undefined') {
el.innerHTML = "ZEROCONF READY";
} else {
el.innerHTML = "ZEROCONF NOT READY";
}
}
但这显示“ZEROCONF NOT READY”…
这就是我的索引现在的样子(我只添加了一段 id="zcOK"
来显示上面的内容)。
<p id="zcOK">ZeroConf test</p>
<!-- ORDER IN WHICH THE SCRIPTS ARE LOADED -->
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="../plugins/com.cambiocreative.cordova.plugin.zeroconf/www/zeroconf.js"></script>
<script type="text/javascript" src="js/index.js"></script> <!-- Contains the onDeviceReady function -->
但是,现在我不知道“ZeroConf”是否未定义,因为插件存在问题,或者因为它包含在“index.html”中而无法从“index.js”中访问?
原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议
检查 cordova-plugin-zeroconf 的 config.xml 和 JS 文件,我发现了这个声明:
所以插件 API 应该在这个命名空间可用: cambiocreative.CDVZeroConfig
事实上,从 Cordova 插件文档 开始: