2017-05-02 5 views
1

Ich arbeite an einem Xamarin Forms PCL-Projekt für Android und iOS, das grundlegende Barcode-Scanfunktionen benötigt.ZXing-Barcodescanner in Xamarin Forms auf iOS liest keine Barcodes

Ich habe Dinge mit der Formularversion des ZXing.Net.Mobile Pakets nach this tutorial und Referenzierung this guide läuft und es funktioniert gut auf Android. Unter iOS wird die Kamera jedoch angezeigt, aber das Ereignis OnScanResult wird nie ausgelöst.

Ich habe es auf mehreren iOS-Geräten getestet, die mehrere verschiedene Versionen (irgendwo zwischen 8.0 - 10.3) laufen lassen und mit allem, was ich mir vorstellen kann, herumgespielt und auch ihre Beispielprojekte referenziert. ZXing.Net.Mobile und ZXing.Net.Mobile.Forms Nugget-Pakete wurden in allen Projekten installiert.

Hier ist mein Scanner Code aus einem Tastendruck auf meiner Hauptseite ausgelöst:

var scanPage = new ZXingScannerPage(); 

scanPage.OnScanResult += (result) => 
{ 
    scanPage.IsScanning = false; 

    Device.BeginInvokeOnMainThread(async() => 
    { 
     await Navigation.PopAsync(); 
     await DisplayAlert("Scanned Barcode", result.Text, "OK"); 
    }); 
}; 

await Navigation.PushAsync(scanPage); 

und AppDelegate.cs:

public override bool FinishedLaunching(UIApplication app, NSDictionary options) 
{ 
    global::Xamarin.Forms.Forms.Init(); 

    global::ZXing.Net.Mobile.Forms.iOS.Platform.Init(); 

    LoadApplication(new App()); 

    return base.FinishedLaunching(app, options); 
} 

Nach zwei Tagen mit diesem Kampf, ich, wie ich fühle Bin am Ende meiner Weisheit. Hat jemand andere ähnliche Probleme festgestellt? Danke für jede Anleitung!


Edit 1

Hier ist das Gerät Protokollausgabe (Message Spalte nur), wenn die Schaltfläche klicken Sie den obigen Code auszulösen. Wenn die Kamera geöffnet ist und auf verschiedene Barcodes zeigt, werden keine Protokollelemente hinzugefügt. Ich sehe hier nichts Verdächtiges, aber vielleicht jemand anderes?

  • PERF: Alloc AVCaptureVideoPreviewLayer dauerte 14.14 ms.
  • AppleH4CamIn :: power_on_hardware
  • AppleH4CamIn :: ISP_SelectBestMIPIFrequencyIndex_gated - Kanal: 0, index: 0
  • StartScanning
  • AppleH4CamIn :: setPowerStateGated: 1
  • ZXingScannerView.Setup() nahm 0,167 ms.
  • ASL Sender Statistiken
  • AppleH4CamIn :: ISP_FlushInactiveDARTMappings: 0x00000000
  • AppleH4CamIn :: ISP_SelectBestMIPIFrequencyIndex_gated - Kanal: 0, Index: 0

bearbeiten 2

lief ich die Probe Xamarin Forms PCL aus der github repo und habe die gleichen Probleme auf iOS mit der Kamera Öffnung gut, aber kein Barcode jemals gelesen. Daher denke ich, dass das Problem mit meinem Visual Studio und/oder Xamarin Setup sein muss. Ich verwende Visual Studio 2015 Community auf dem stabilen Xamarin-Kanal.

+0

verwenden Sie tatsächlich den Debugger, um zu überprüfen, ob OnScanResult nicht aufgerufen wird, oder sich nur auf die Warnung/Navigation verlassen, um Ihnen zu sagen? – Jason

+0

Ich bin durchgetreten und ich sehe nicht, dass es angerufen wird. Ich bringe auch das Geräteprotokoll hoch, während es läuft, und alles sieht gut aus, ohne dass Fehler ausgelöst werden. –

Antwort

0

Ich habe es endlich mit this project als Ausgangspunkt arbeiten. Es ist nur eine grundlegende Barcode-Scan-Implementierung mit ZXing, aber aus welchem ​​Grund auch immer konnte ich endlich Barcodes auf iOS lesen.

Es ist wahrscheinlich ein versionsbezogenes Problem, aber ich konnte es nicht eingrenzen.

bearbeiten

posted ich diese gleiche Frage in den Xamarin Foren: https://forums.xamarin.com/discussion/comment/272209#Comment_272209

Es scheint die Antwort auf ZXing Version 2.1.47 wurde die Herabstufung. Ich habe seit ein paar Monaten keine Arbeit mit der Bibliothek gemacht, also habe ich keine neuen Versionen getestet.

0
add this on ios 

protected override void OnAppearing() 
     { 
      base.OnAppearing(); 
      qrcode.IsScanning = true; 
     }`enter code here` 

     protected override void OnDisappearing() 
     { 
      qrcode.IsScanning = false; 
      base.OnDisappearing(); 

     } 
+0

Ich verwirrte mich mit der manuellen Einstellung 'IsScanning = true' ohne Erfolg. Ich habe das Geräteprotokoll zu meinem Post hinzugefügt, wo ich glaube, dass die Zeile "Scan starten" anzeigt, dass es wie beabsichtigt funktioniert. –

0

Versuchen Sie dies mit:

ist
scanPage.IsAnalyzing = true; 
+0

Dies bietet keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/17116958) – Adonis

-1

IsAnalyzing unterscheidet sich von IsScanning.

Ich konfrontiert das gleiche Problem wie Sie. Aber nach der Verwendung von IsAnalyzing = true; ist es behoben.