11

Mam problem z zadzwonieniem do funkcji skanowania Pdf417 phonegap/cordova plugin w trybie demonstracyjnym w aplikacji jonowej. Testuję wtyczkę z Ionic View na iOS.Wywołanie wtyczki Pdf417 phonegap/cordova w systemie Ionic

Here is a linked Github repository zawierające uproszczoną wersję aplikacji z tylko jednym stanem i kontrolerem.

Niestety jestem całkowicie zdezorientowany, dlaczego to nie działa kiedy testuję to. Pojawia się komunikat "cordova nie jest zdefiniowana" w przeglądarce, której oczekiwałbym, ponieważ wtyczki cordova powinny mieć 404 w przeglądarce, ale nie działa też w Ionic View.

Z powodzeniem zainstalowałem wtyczkę z "cordova plugin add (lokalizacja pdf417 git repo"), zanim spróbuję to zrobić.

Każda pomoc zostanie bardzo doceniona. Nie mam zbyt dużego doświadczenia, więc mogę być na niewłaściwym torze i przepraszam z góry, jeśli tak. W ogóle pomocne byłyby wszelkie wskazówki. Jeśli nie mam nic do powiedzenia, chętnie to rozwiążę. Jestem pewien, że mogłem przegapić jakieś potrzebne informacje.

Oto moje app.js z aplikacji:

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

Również tutaj jest mój dziennik systemu po kliknięciu na przycisk, aby uruchomić PDF417 z „jonowego naśladować iOS”, aby uruchomić symulator.

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

UPDATE: Oczekuje się, że ten błąd jako urządzenie peryferyjne nie jest dostępny w emulatorze, choć nadal mam żadnej funkcji w trakcie badania w widoku jonowej (obecnie z iOS).

+1

Po prostu próbowałem go użyć i nie miałem problemu. Kiedy używasz Cordova naga, używasz poleceń Cordova, ale jeśli chcesz używać Ionic, lepiej używać tylko poleceń jonowych, aby uniknąć nieoczekiwanych zachowań. Również ta wtyczka ma dziwną strukturę (wtyczka w przykładzie, jest to pierwsza!). –

+0

Dziękujemy za sprawdzenie. Czy powinienem spróbować testować z Xcode zamiast testować w widoku jonowym? Jak dotąd nie reaguje on na żadną reakcję jonową. Ponadto, wiem, że to dość dziwne, aby umieścić wtyczkę w kontrolerze. To naprawdę powinno być w usłudze, ale chciałem zminimalizować zmienne w moim wydaniu, ponieważ jestem już zdezorientowany, dlaczego wtyczka nie reaguje na mnie. – Johnnie

+0

Nie mówiłem o twoim kodzie, ale o wtyczce pdf417;) Zwykle to, co znajduje się w katalogu Pdf417 powinno znajdować się w katalogu głównym wtyczki, więc pozwoliłoby zainstalować go za pomocą prostego 'cordova | ionic plugin add https:// github.com/PDF417/pdf417-phonegap'. W każdym razie, nie ma ogólnych zasad dotyczących miejsca wstrzyknięcia wtyczek. To naprawdę zależy od tego, co robią te usługi. Rzeczywiście w iOS zawsze warto spróbować zbudować pod Xcode, kiedy to nie działa. Tak przynajmniej działa w samej Cordowie. Czy próbowałeś uruchomić bez tej wtyczki? –

Odpowiedz

1

Odpowiedź na twój problem jest bardzo prosta: Ionic View obsługuje tylko ograniczoną liczbę wtyczek (w tej chwili), a twój nie ma na liście.

Zaczęło się od wspierania jeszcze mniej, ale więcej zostało dodanych.

Oto istotne ogniwo: http://docs.ionic.io/v1.0/docs/view-usage

Sugerowałbym wdrażania do urządzenia za pomocą kabla USB.

Powiązane problemy