11

Tôi gặp sự cố khi gọi thành công chức năng quét Pdf417 phonegap/cordova plugin ở chế độ demo trong ứng dụng Ionic. Tôi đang thử nghiệm plugin với Ionic View trên iOS.Gọi Pdf417 plugin phonegap/cordova trong Ionic

Here is a linked Github repository chứa phiên bản đơn giản của ứng dụng chỉ với một trạng thái và bộ điều khiển.

Thật không may tôi hoàn toàn nhầm lẫn là tại sao điều này không hoạt động khi tôi kiểm tra. Tôi nhận được thông báo lỗi 'cordova không được xác định' trong trình duyệt, điều mà tôi mong đợi vì plugin cordova cần 404 trong trình duyệt, nhưng cũng không hoạt động ở chế độ xem Ionic.

Tôi đã cài đặt plugin thành công với 'thêm plugin cordova (vị trí của pdf417 git repo') trước khi thử thực hiện công việc này.

Mọi trợ giúp sẽ được đánh giá cao. Tôi không có nhiều kinh nghiệm vì vậy tôi có thể đang đi sai đường nói chung và xin lỗi trước nếu tôi. Bất kỳ hướng dẫn nào cũng sẽ hữu ích. Nếu tôi không rõ ràng với bất cứ điều gì tôi sẽ vui vẻ xây dựng. Tôi chắc rằng tôi có thể đã bỏ sót một số thông tin cần thiết.

Đây là app.js của tôi từ các ứng dụng:

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' 
     } 
     } 
    }) 
}); 

Ngoài ra, đây là log hệ thống của tôi khi tôi nhấp vào nút để khởi động PDF417 với 'thi đua ios ion' để chạy mô phỏng.

THREAD WARNING: [‘Pdf416Scanner’] took ’12.760742’ ms. 
Plugin should use a background thread. 

CẬP NHẬT: Lỗi này không được thực hiện khi thử nghiệm ở chế độ xem ion (hiện tại với iOS).

+1

Tôi chỉ cố gắng sử dụng nó và tôi không có vấn đề gì. Khi bạn sử dụng Cordova trần truồng, bạn sử dụng lệnh Cordova nhưng nếu bạn muốn sử dụng Ionic, tốt hơn là chỉ sử dụng các lệnh Ionic để tránh các hành vi không mong muốn. Ngoài ra plugin này được cấu trúc kỳ lạ (một plugin bên trong một ví dụ, đây là lần đầu tiên!). –

+0

Cảm ơn bạn đã kiểm tra. Tôi có nên thử kiểm tra bằng Xcode thay vì thử nghiệm trong chế độ xem ion không? Nó hoàn toàn không phản hồi trong ionic vew cho đến nay. Ngoài ra, tôi biết khá lạ khi đặt plugin vào bộ điều khiển. Nó thực sự nên được trong một dịch vụ, nhưng tôi muốn giảm thiểu các biến trong vấn đề của tôi như tôi đã nhầm lẫn là tại sao các plugin không được đáp ứng cho tôi. – Johnnie

+0

Tôi đã không nói về mã của bạn nhưng về plugin pdf417;) Thông thường những gì nằm trong thư mục Pdf417 nên ở gốc của plugin, vì vậy nó sẽ cho phép cài đặt nó thông qua một plugin 'cordova | ionic đơn giản thêm https:// github.com/PDF417/pdf417-phonegap'. Dù sao, không có quy tắc chung về nơi để tiêm các dịch vụ plugin của bạn. Nó thực sự phụ thuộc vào những gì dịch vụ này làm. Quả thực dưới iOS nó luôn luôn có giá trị một thử để xây dựng theo Xcode khi nó không hoạt động. Đây là ít nhất cách nó hoạt động dưới Cordova một mình. Bạn đã cố gắng chạy nó mà không có plugin này? –

Trả lời

1

Câu trả lời cho vấn đề của bạn rất đơn giản: Ionic View chỉ hỗ trợ số lượng plugin giới hạn (tại thời điểm này) và bạn không có trong danh sách.

Nó bắt đầu hỗ trợ thậm chí ít hơn nhưng đã được thêm vào.

Dưới đây là một liên kết có liên quan: http://docs.ionic.io/v1.0/docs/view-usage

tôi sẽ đề nghị triển khai đến một thiết bị thông qua cổng USB.

Các vấn đề liên quan