如何从 Meteor 调用 Cordova 插件方法?
How to call Cordova plugin methods from Meteor?
这里是 Meteor 的新手。我在从 Meteor 调用 Cordova 插件方法时遇到问题。
这是我关心的插件:
http://plugins.cordova.io/#/package/com.phonegap.plugins.barcodescanner
我在命令行中添加了包:
流星添加 cordova:com.phonegap.plugins.barcodescanner@2.0.1
下面是我的 javascript 代码。最终发生的事情是在启动时加载 onCallback 方法,但没有发生条形码扫描,也没有调用 onSuccess 和 onError。我已经尝试过与其他 cordova 包类似的方法,但没有任何效果。我也尝试用所有小写字母、'barcodeScanner.scan'、'com.phonegap.plugins.barcodescanner.scan' 等变体替换 cordova.call 中的 'cordova.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);
});
}
}
在 Meteor Cordova 应用程序中,Meteor.startup 用作设备就绪事件,因此您不需要设备就绪事件。此外,cordova 已在全局上下文中定义,因此您无需尝试创建新实例。最后,阅读 plugins.cordova.io 上的插件页面说明该插件已命名为 cordova.plugins.barcodeScanner。在您的情况下,barcodeScanner class 上的扫描方法特别令人感兴趣。您可以像下面这样在 meteor 中使用它,但请注意,当应用程序从完全停止状态启动时,这将打开扫描仪,因此最好从诸如单击事件之类的事件中调用扫描方法。
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);
}
);
});
}
这里是 Meteor 的新手。我在从 Meteor 调用 Cordova 插件方法时遇到问题。
这是我关心的插件: http://plugins.cordova.io/#/package/com.phonegap.plugins.barcodescanner
我在命令行中添加了包: 流星添加 cordova:com.phonegap.plugins.barcodescanner@2.0.1
下面是我的 javascript 代码。最终发生的事情是在启动时加载 onCallback 方法,但没有发生条形码扫描,也没有调用 onSuccess 和 onError。我已经尝试过与其他 cordova 包类似的方法,但没有任何效果。我也尝试用所有小写字母、'barcodeScanner.scan'、'com.phonegap.plugins.barcodescanner.scan' 等变体替换 cordova.call 中的 'cordova.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);
});
}
}
在 Meteor Cordova 应用程序中,Meteor.startup 用作设备就绪事件,因此您不需要设备就绪事件。此外,cordova 已在全局上下文中定义,因此您无需尝试创建新实例。最后,阅读 plugins.cordova.io 上的插件页面说明该插件已命名为 cordova.plugins.barcodeScanner。在您的情况下,barcodeScanner class 上的扫描方法特别令人感兴趣。您可以像下面这样在 meteor 中使用它,但请注意,当应用程序从完全停止状态启动时,这将打开扫描仪,因此最好从诸如单击事件之类的事件中调用扫描方法。
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);
}
);
});
}