当前位置 : 主页 > 手机开发 > cordova >

在Ionic中调用Pdf417 phonegap / cordova插件

来源:互联网 收集:自由互联 发布时间:2021-06-10
我在Ionic应用程序中成功调用演示模式中的 Pdf417 phonegap/cordova plugin扫描功能时遇到困难.我在iOS上使用Ionic View测试插件. Here is a linked Github repository包含只有一个状态和控制器的应用程序
我在Ionic应用程序中成功调用演示模式中的 Pdf417 phonegap/cordova plugin扫描功能时遇到困难.我在iOS上使用Ionic View测试插件.

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部署到设备.

网友评论