我在Ionic应用程序中以演示模式成功调用Pdf417 phonegap/cordova插件扫描功能时遇到麻烦。我正在iOS上使用Ionic View测试插件。
这里是一个链接的Github存储库,其中包含应用程序的简化版本,只有一个状态和控制器。
不幸的是,当我测试它时,我完全弄不明白为什么这不起作用。我在浏览器中遇到一个错误,说“cordova未定义”,我认为这是因为cordova插件在浏览器中应该是404,但在Ionic View中也不起作用。
在尝试进行此操作之前,我已使用“cordova plugin add(pdf417 git repo的位置)”成功安装了该插件。
任何帮助都将不胜感激。我没有太多的经验,所以我可能总体上走错了方向,如果我走错了,请提前道歉。任何指导都会有所帮助。如果我有什么不清楚的地方,我很乐意详细说明。我肯定我错过了一些必要的信息。
这是我的应用程序。来自应用程序的js:
angular.module('app', ['ionic'])
/**
* RUN
*/
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
StatusBar.styleDefault();
}
});
})
/**
* CONTROLLERS
*/
//Workflow Controller
.controller('workflowCtrl', ['$scope', '$ionicPlatform', '$ionicPopup',
function($scope, $ionicPlatform, $ionicPopup) {
$ionicPlatform.ready(function() {
//***PDF417 SCANNER***
function hex2a(hex) {
var str = '';
for (var i = 0; i < hex.length; i += 2) {
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
}
return str;
}
var types = ["PDF417", "QR Code"];
var options = {
beep : true, // Beep on
noDialog : true,
uncertain : false, //Recommended
quietZone : false, //Recommended
highRes : false, //Recommended
inverseScanning: false,
frontFace : false
};
var licenseiOs = null;
var licenseAndroid = null;
$scope.barcodeResult;
$scope.fields;
$scope.scan = function() {
$ionicPopup.alert({
title:'Scan Button Clicks',
});
console.log('Scan Button Clicks');
cordova.plugins.pdf417Scanner.scan(
// Register the callback handler
function callback(scanningResult) {
// handle cancelled scanning
if (scanningResult.cancelled == true) {
console.log('Scanner cancelled');
$scope.warnings = "Cancelled";
return;
}
// Obtain list of recognizer results
var resultList = scanningResult.resultList;
// Iterate through all results
for (var i = 0; i < resultList.length; i++) {
// Get individual resilt
var recognizerResult = resultList[i];
if (recognizerResult.resultType == "Barcode result") {
// handle Barcode scanning result
if (typeof(recognizerResult.raw) != "undefined" && recognizerResult.raw != null) {
var raw = hex2a(recognizerResult.raw);
}
$scope.barcodeResult = {
"Data": recognizerResult.data,
"Raw": raw,
"Type": recognizerResult.type
};
} else if (recognizerResult.resultType == "USDL result") {
// handle USDL parsing result
var fields = recognizerResult.fields;
$scope.fields = {
/** Personal information */
"USDL version": fields[kPPAamvaVersionNumber],
"Family name": fields[kPPCustomerFamilyName],
"First name": fields[kPPCustomerFirstName],
"Date of birth": fields[kPPDateOfBirth],
"Sex": fields[kPPSex],
"Eye color": fields[kPPEyeColor],
"Height": fields[kPPHeight],
"Street": fields[kPPAddressStreet],
"City": fields[kPPAddressCity],
"Jurisdiction": fields[kPPAddressJurisdictionCode],
"Postal code": fields[kPPAddressPostalCode],
/** License information */
"Issue date": fields[kPPDocumentIssueDate],
"Expiration date": fields[kPPDocumentExpirationDate],
"Issuer ID": fields[kPPIssuerIdentificationNumber],
"Jurisdiction version": fields[kPPJurisdictionVersionNumber],
"Vehicle class": fields[kPPJurisdictionVehicleClass],
"Restrictions": fields[kPPJurisdictionRestrictionCodes],
"Endorsments": fields[kPPJurisdictionEndorsementCodes],
"Customer ID": fields[kPPCustomerIdNumber]
};
}
}
},
// Register the error callback
function errorHandler(err) {
console.log("error: " + err);
$scope.warnings = err;
},
types, options, licenseiOs, licenseAndroid
);
};
//***END PDF417 SCANNER***
});
}])
/**
* ROUTING
*/
.config(function($ionicConfigProvider, $stateProvider, $urlRouterProvider)
{
$ionicConfigProvider.tabs.position('bottom');
$ionicConfigProvider.tabs.style('striped');
$ionicConfigProvider.navBar.alignTitle('center');
$urlRouterProvider.otherwise('/tab/workflow');
$stateProvider
// setup an abstract state for the tabs directive
.state('tab', {
url: '/tab',
abstract: true,
templateUrl: 'partials/tab.html'
})
// Each tab has its own nav history stack:
.state('tab.workflow', {
url: '/workflow',
views: {
'tab-workflow': {
templateUrl: 'partials/tab-workflow.html',
controller: 'workflowCtrl'
}
}
})
});
此外,当我点击按钮启动带有“ionic emulate ios”的pdf417以运行模拟器时,这是我的系统日志。
THREAD WARNING: [‘Pdf416Scanner’] took ’12.760742’ ms.
Plugin should use a background thread.
更新:这个错误是预料之中的,因为模拟器中没有外设,尽管在ionic view(目前使用iOS)中测试时,我在中仍然没有功能。
你的问题的答案很简单:Ionic View只支持有限数量的插件(目前),你的不在列表中。
一开始支持更少,但增加了更多。
以下是相关链接:http://docs.ionic.io/v1.0/docs/view-usage
我建议通过USB部署到设备。
我有以下问题,我需要完全禁用本机键盘。键盘应该只在我调用show()时显示,在我调用close()函数时隐藏(这将出现在用户切换键盘的按钮上)。需要完全禁用显示单击字段和焦点的键盘。 在Stackoverflow上,我发现了以下内容:InputMethodManager im=(InputMethodManager)getSystemService(Context.INPUT\u METHOD\u
我试图运行我的Ionic应用程序在Android设备与cordov-plugin-fcm,但我得到下面的错误,当我尝试安装它()或运行它()。尽管有错误,但该插件仍列在科尔多瓦插件中。 (node:2360)unhandledpromiserejection warning:未处理的promise拒绝(拒绝id: 1): TypeError:无效数据,chunk必须是字符串或缓冲区,而不是对象(n
我有麻烦-使用ionic创建一个android构建。它最初运行良好。我尝试将android目标平台更改为19-这是4.4.2 kitkat。 这是错误消息-显然cordova文件插件有问题。当我将平台sdk目标更改为19时。 任何帮助将不胜感激。 /myapp/platforms/android/src/org/apache/cordova/file/LocalFilesystem.java:41
是的,我搜索了这个,但没有,只是关于ANDROID_HOME路径的东西,但在我的情况下,我不认为这是真正的问题。当我尝试执行时,我得到以下错误: 错误:在android SDK中找不到gradle包装器。可能需要更新你的Android SDK。查看此处:C:\Android\SDK\tools\templates\gradle\wrapper 并发现在中没有“模板”文件夹,只有以下内容:
嗨,我有很多测试轮,但不能得到确切的解决方案,所以张贴帮助。 我的应用程序在Ionic not Ionic2中 使用plugin for network是“network Information”cordova plugin network Information 1.3.0“network Information”链接 脚本: 当用户最小化应用程序并转到后台并关闭WiFi、移动数据等网络源并返回
我不知道在Cordova项目上使用ionic键盘插件是否有意义,我将其添加到我的Cordova IOS项目中,并在我的视图渲染中称为“Cordova.plugins.keyboard.show()”,这就是我得到的(没有键盘,只有附件栏)http://grab.by/BFX6皱眉 知道我做错了什么吗? 非常感谢!!