这里的流星新手。我无法从Meteor调用Cordova插件方法。
这是我关心的插件: http://plugins.cordova.io/#/package/com.phonegap.plugins.barcodescanner
我在命令行中添加了包: meteor add cordova:com.phonegap.plugins.barcodescanner@2.0.1
以下是我的javascript代码。最终发生的事情是在启动时,onCallback方法加载,但不会发生条形码扫描,也不会调用onSuccess和onError。我尝试过类似的方法与其他cordova包,但没有任何作用。我还尝试用cordova.call中的'cordova.plugins.barcodeScanner.scan'替换所有下限,'barcodeScanner.scan','com.phonegap.plugins.barcodescanner.scan'等变体,但是没有用。
if (Meteor.isCordova) {
Meteor.startup(function () {
cordova = new Cordova();
cordova.addEventListener('deviceready', function() {
function onSuccess(result) {
alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
"Format: " + result.format + "\n" +
"Cancelled: " + result.cancelled);
}
function onError(error) {
alert("Scanning failed: " + error);
}
function onCallback(msg) {
alert("Callback! " + msg);
}
cordova.call(
'cordova.plugins.barcodeScanner.scan',
[onSuccess, onError],
onCallback);
});
}
}
答案 0 :(得分:22)
在Meteor Cordova应用程序中,Meteor.startup用作deviceready事件,因此您不需要deviceready事件。此外,cordova已在全局上下文中定义,因此您无需尝试创建新实例。最后,阅读plugins.cordova.io上的插件页面解释说该插件已命名为cordova.plugins.barcodeScanner。在您的情况下,barcodeScanner类的扫描方法特别重要。您可以在下面的流星中使用它,但请注意,这将在应用程序从完全停止启动时打开扫描仪,因此最好从点击事件等方式调用扫描方法。
if(Meteor.isCordova){
Meteor.startup(function () {
cordova.plugins.barcodeScanner.scan(
function (result) {
alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
"Format: " + result.format + "\n" +
"Cancelled: " + result.cancelled);
},
function (error) {
alert("Scanning failed: " + error);
}
);
});
}