我在Ionic应用程序中成功调用演示模式中的 Pdf417 phonegap/cordova plugin扫描功能时遇到困难.我在iOS上使用Ionic View测试插件. Here is a linked Github repository包含只有一个状态和控制器的应用程序
Here is a linked Github repository包含只有一个状态和控制器的应用程序的简化版本.
不幸的是,我完全迷惑于为什么这不工作
当我测试它我得到一个错误,说’cordova没有定义’
在浏览器中,我期望因为cordova插件应该
404在浏览器,但它不工作在Ionic视图.
在尝试完成此工作之前,我已经使用’cordova plugin add(pdf417 git repo的位置)成功安装了该插件.
任何帮助将不胜感激.我没有太多经验
所以我可能在一般错误的轨道上,如果我是提前抱歉.任何指导都是有帮助的.如果我不清楚任何事情,我会很乐意的.我相信我可能错过了一些所需的信息.
这是我应用程序中的app.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' } } }) });
另外,这是我的系统日志,当我点击按钮启动pdf417与’离子模拟ios’来运行模拟器.
THREAD WARNING: [‘Pdf416Scanner’] took ’12.760742’ ms. Plugin should use a background thread.
更新:由于外设在仿真器中不可用,因此我们仍然无法在离子视图(当前使用iOS)进行测试时仍然无法使用此错误.
对您的答案您的问题非常简单:Ionic View仅支持有限数量的插件(目前为止),而您的列表不在.它开始支持更少,但更多的增加.
这是一个相关链接:http://docs.ionic.io/v1.0/docs/view-usage
我建议通过USB部署到设备.