IRONSOFTWAREHOME
FILMY

Migrating from BarcodeScanning.Native.Maui to IronBarcode

Curtis Chau
Curtis Chau
Updated: 3 maja 2026

Niniejszy przewodnik przedstawia kompletną ścieżkę migracji z BarcodeScanning.Native.Maui do IronBarcode, obejmującą zastąpienie wzorca zdarzeń kamery, zmiany przestrzeni nazw, przykłady migracji kodu oraz obsługę scenariuszy, których BarcodeScanning.Native.Maui nie jest w stanie obsłużyć — Windows MAUI, wprowadzanie plików i PDF, przetwarzanie po stronie serwera oraz generowanie kodów kreskowych.

Dlaczego warto przejść z BarcodeScanning.MAUI

Zespoły migrujące z BarcodeScanning.Native.Maui zgłaszają następujące wyzwałącze:

Wymagany cel Windows MAUI: BarcodeScanning.Native.Maui obsługuje natywne interfejsy API systemów iOS i Android. Nie ma implementacji dla systemu Windows i nie jest ona planowana. Jeśli Twoja aplikacja MAUI jest przeznaczona dla systemów Windows, iOS i Android, potrzebujesz biblioteki, która działa na wszystkich trzech platformach bez konieczności tworzenia odgałęzień specyficznych dla danej platformy.

Dodano plik lub dane wejściowe w formacie PDF do wymagań: BarcodeScanning.Native.Maui akceptuje wyłącznie klatki z kamery na żywo. Gdy użytkownicy muszą przesłać obraz z galerii lub gdy punkt końcowy po stronie serwera musi wyodrębnić BARCODE-y z plików PDF, biblioteka nie oferuje żadnej ścieżki kodu. Każdy scenariusz dotyczący plików lub BarCodes w formacie PDF wymaga innego narzędzia.

Dane UPC-A w systemie iOS były błędne w środowisku produkcyjnym: framework Apple Vision zwraca 13 cyfr dla BARCODE-ów UPC-A (kodowanie EAN-13). BarcodeScanning.Native.Maui przekazuje to bez poprawek. Gdyby kody UPC-A były przechowywane z zerem na początku, mogłoby to spowodować niepostrzeżone zakłócenia w rejestrach zapasów, wyszukiwaniu w punktach sprzedaży lub integracji łańcucha dostaw.IronBarcode zwraca prawidłową 12-cyfrową wartość UPC-A bez konieczności ręcznej normalizacji.

Skanowanie PDF417 było zawodne: W dokumentacji biblioteki na GitHubie PDF417 jest opisany jako "bardzo problematyczny — większość skanów nigdy nie dochodzi do skutku". W przypadku etykiet wysyłkowych, praw jazdy i kart pokładowych stanowi to bezpośrednią przeszkodę.

Wymagane generowanie: BarcodeScanning.Native.Maui nie może generować kodów kreskowych.IronBarcode generuje kody Code128, QR, DataMatrix i inne formaty jako pliki graficzne lub tablice bajtów.

Wprowadzenie przetwarzania po stronie serwera: BarcodeScanning.Native.Maui to kontrolka interfejsu użytkownika kamery — nie może działać w procesie serwera. Gdy oprócz skanowania mobilnego wymagane jest odczytywanie kodów kreskowych po stronie serwera,IronBarcode obsługuje obie strony za pomocą tego samego pakietu i tego samego interfejsu API.

Podstawowy problem

BarCodeScanning.Native.Maui całkowicie wiąże odczyt kodów kreskowych z modelem zdarzeń na żywo z kamery. W momencie, gdy jakikolwiek wymóg wykracza poza ten model, biblioteka nie oferuje nic:

private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        ResultLabel.Text = barcode.DisplayValue;
}

IronBarcode akceptuje dowolne dane wejściowe — zdjęcia z aparatu, pliki, PDF, tablice bajtów — i działa na każdej platformie:

using IronBarCode;

private async void ScanBarcodeButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    ResultLabel.Text = results.FirstOrDefault()?.Value ?? "No barcode found";
}

##IronBarcode a BarcodeScanning.MAUI: Porównanie funkcji

FunkcjaBarcodeScanning.MAUIIronBarcode
Odczytywanie klatek z kamery na żywoTak — kontrolka CameraViewNie (użyj MediaPicker do przechwycenia, a następnie odczytania)
Wizjer aparatu w aplikacjiTak — w czasie rzeczywistym, w sposób ciągłyNie — korzysta z interfejsu użytkownika aparatu systemowego za pośrednictwem MediaPicker
Odczyt z pliku graficznegoNieTak — BarcodeReader.Read(path)
Odczyt z tablicy bajtówNieTak — BarcodeReader.Read(bytes)
Odczyt z strumieniaNieTak — BarcodeReader.Read(stream)
Czytaj z pliku PDFNieTak — BarcodeReader.Read(pdf)
Generowanie BarCodeNieTak — BarcodeWriter + QRCodeWriter
Obsługa Windows MAUINieTak
Obsługa iOS MAUITakTak
Obsługa MAUI w systemie AndroidTakTak
Obsługa macOS MAUIBrak dokumentacjiTak
Po stronie serwera / ASP.NETNieTak
Docker / Azure / AWS LambdaNieTak
Dokładność iOS UPC-AZwraca 13 cyfr (błąd), wymaga ręcznej normalizacjiZwraca poprawny 12-cyfrowy kod UPC-A
Niezawodność PDF417"Większość skanów nigdy nie ma miejsca" (zgłoszenia na GitHubie)Obsługiwane
Wykrywanie wielu kodów BarCodeTak (wiele na ramkę za pomocą e.BarcodeResults)Tak (opcja ExpectMultipleBarcodes)
Kontrola prędkości czytaniaNoneReadingSpeed.Faster / Balanced / Detailed / ExtremeDetail
LicencjaMIT (open source, bezpłatne)Wersja komercyjna — Lite 749 USD, Plus 1499 USD, Professional 2999 USD, Unlimited 5999 USD
Obsługa platformy .NET FrameworkNie (tylko MAUI)Tak — .NET Framework 4.6.2+

Szybki start: Migracja z BarcodeScanning.MAUI do IronBarcode

Krok 1: Zastąp pakiet NuGet

Usuń BarcodeScanning.Native.Maui:

dotnet remove package BarcodeScanning.Native.Maui
SHELL

Zainstaluj IronBarcode:

dotnet add package IronBarcode
SHELL

Krok 2: Aktualizacja przestrzeni nazw

Usuń przestrzeń nazw BarcodeScanning ze wszystkich plików:

// Remove
using BarcodeScanning;

Dodaj przestrzeń nazw IronBarcode:

// Add
using IronBarCode;

W plikach XAML usuń deklarację przestrzeni nazw XML scanner::

<!-- Remove this line from ContentPage attributes -->
xmlns:scanner="clr-namespace:BarcodeScanning;assembly=BarcodeScanning.Native.Maui"
XML

Krok 3: Inicjalizacja licencji

Dodaj inicjalizację licencji przy starcie aplikacji — w MauiProgram.cs lub App.xaml.cs:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Przykłady migracji kodu

Skanowanie kamerą: CameraView do MediaPicker

Kontrola CameraView zapewniał celownik o rzeczywistym podglądzie z ciągłym wykrywaniem ramek. Zamiennik IronBarcode używa MediaPicker MAUI do otwarcia systemowej kamery, zrobienia zdjęcia i przetworzenia wynikowego obrazu.

Podejście BarcodeScanning.MAUI — XAML:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:scanner="clr-namespace:BarcodeScanning;assembly=BarcodeScanning.Native.Maui">
    <StackLayout>
        <scanner:CameraView x:Name="CameraView"
                            OnDetectionFinished="OnBarcodeDetected"
                            CameraEnabled="True"
                            BarcodeFormats="All"
                            VerticalOptions="FillAndExpand" />
        <Label x:Name="ResultLabel" Text="Waiting for scan..." />
    </StackLayout>
</ContentPage>
XML

Podejście BarcodeScanning.MAUI — kod źródłowy:

using BarcodeScanning;

private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode != null)
        MainThread.BeginInvokeOnMainThread(() =>
            ResultLabel.Text = barcode.DisplayValue);
}

Podejście IronBarcode— XAML:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui">
    <StackLayout>
        <Button Text="Scan Barcode" Clicked="ScanButton_Clicked" />
        <Label x:Name="ResultLabel" Text="Tap to scan..." />
    </StackLayout>
</ContentPage>
XML

Podejście IronBarcode— kod źródłowy:

using IronBarCode;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    var first = results.FirstOrDefault();
    ResultLabel.Text = first?.Value ?? "No barcode found";
}

Ten kod działa na systemach iOS, Android i Windows MAUI bez żadnych rozgałęzień specyficznych dla danej platformy. Doświadczenie użytkownika zmienia się z podglądu na żywo w aplikacji na natywny ekran aparatu platformy — odpowiedni dla większości aplikacji biznesowych. Przewodnik użytkownika IronBarcode MAUI zawiera informacje o dodatkowych opcjach konfiguracyjnych.

Obsługa wielu BarCodes w jednym skanowaniu

Podejście BarcodeScanning.MAUI:

private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    foreach (var barcode in e.BarcodeResults)
    {
        MainThread.BeginInvokeOnMainThread(() =>
            Console.WriteLine($"Found: {barcode.DisplayValue}"));
    }
}

Podejście IronBarcode:

using IronBarCode;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var options = new BarcodeReaderOptions
    {
        Speed = ReadingSpeed.Balanced,
        ExpectMultipleBarcodes = true
    };

    var results = BarcodeReader.Read(ms.ToArray(), options);
    foreach (var result in results)
        Console.WriteLine($"{result.Format}: {result.Value}");
}

ExpectMultipleBarcodes = true mówi użytkownikowi, aby kontynuował skanowanie po znalezieniu pierwszego kodu kreskowego. Bez tej opcji wywołanie zwraca wynik przy pierwszym dopasowaniu, co jest szybsze w przypadku scenariuszy z jednym BARCODE-em.

Poprawka iOS UPC-A: Usunięcie obejścia normalizacji

Jeśli w Twoim kodzie występuje obejście dotyczące zer wiodących w kodach UPC-A, usuń je całkowicie.IronBarcode zwraca prawidłową 12-cyfrową wartość bez żadnej ręcznej interwencji.

Podejście BarcodeScanning.MAUI — zastosowane obejście:

private void OnBarcodeDetected(object sender, OnDetectionFinishedEventArg e)
{
    var barcode = e.BarcodeResults.FirstOrDefault();
    if (barcode == null) return;

    var value = barcode.DisplayValue;

    // Workaround: Apple Vision returns 13 digits for UPC-A
    if (barcode.BarcodeFormat == BarcodeFormats.Upca && value.Length == 13)
        value = value.Substring(1);

    ProcessBarcode(value, barcode.BarcodeFormat.ToString());
}

Podejście IronBarcode— nie wymaga żadnych obejść:

using IronBarCode;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    var first = results.FirstOrDefault();
    if (first == null) return;

    // result.Value is the correct 12-digit UPC-A — no normalization needed
    ProcessBarcode(first.Value, first.Format.ToString());
}

Usuń wszelkie dopasowania dla BarcodeFormats.Upca sparowanego z Substring(1) — ten kod jest nieaktywny po migracji.

Dodanie obsługi plików i formatu PDF

BarcodeScanning.Native.Maui nie ma odpowiednika dla plików lub danych wejściowych w formacie PDF. Jeśli jest to nowe wymaganie, które ma zostać spełnione w momencie migracji:

Podejście BarcodeScanning.MAUI:

// Nie equivalent exists — BarcodeScanning.Native.Maui cannot read from files or PDFs
C#

Podejście IronBarcode:

using IronBarCode;

// Read from a file the user picked with FilePicker
private async void ReadFileButton_Clicked(object sender, EventArgs e)
{
    var file = await FilePicker.PickAsync(new PickOptions
    {
        PickerTitle = "Select image or PDF"
    });
    if (file == null) return;

    var results = BarcodeReader.Read(file.FullPath);
    foreach (var result in results)
        ResultLabel.Text += $"\n{result.Format}: {result.Value}";
}

// Read barcodes from a PDF directly — no intermediate image step
private void ReadPdfBarcodes()
{
    var results = BarcodeReader.Read("shipment-manifest.pdf");
    foreach (var result in results)
        Console.WriteLine($"{result.Format}: {result.Value}");
}

Dokumentacja dotycząca odczytu plików PDF w IronBarcode obejmuje obsługę wielostronicowych plików PDF oraz wybór zakresu stron.

Przetwarzanie BarCodes po stronie serwera

Jeśli twoja aplikacja ma backend API ASP.NET, który również wymaga przetwarzania kodów kreskowych, to samo wywołanie BarcodeReader.Read() działa tam bez modyfikacji. BarcodeScanning.Native.Maui nie ma odpowiednika po stronie serwera.

Podejście BarcodeScanning.MAUI:

// Nie equivalent exists — BarcodeScanning.Native.Maui is a camera UI control
// and cannot run in a server process
C#

Podejście IronBarcode:

using IronBarCode;

// ASP.NET endpoint — reads barcodes from an uploaded file
[HttpPost("scan")]
public async Task<IActionResult> ScanBarcode(IFormFile file)
{
    using var ms = new MemoryStream();
    await file.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    var values = results.Select(r => new { r.Value, Format = r.Format.ToString() });
    return Ok(values);
}

Ten sam pakiet, to samo API, to samo działanie — na urządzeniach mobilnych i serwerach.

Generowanie BarCodes

BarcodeScanning.Native.Maui nie posiada API do generowania.IronBarcode generuje wiele formatów.

Podejście BarcodeScanning.MAUI:

// Nie equivalent exists — BarcodeScanning.Native.Maui cannot generate barcodes
C#

Podejście IronBarcode:

using IronBarCode;

// QR code
QRCodeWriter.CreateQrCode("https://example.com/product/12345", 500)
    .SaveAsPng("qr.png");

// Code128 barcode sized to specific dimensions
BarcodeWriter.CreateBarcode("ITEM-98765", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("label.png");

// Get bytes for returning from an API or storing in a database
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("ITEM-98765", BarcodeEncoding.Code128)
    .ToPngBinaryData();

Dokumentacja dotycząca generowania kodów kreskowych IronBarcode obejmuje wszystkie obsługiwane formaty i opcje stylizacji.

BarcodeScanning.MAUI API do dokumentacji IronBarcode Mapping Reference

BarcodeScanning.Native.MauiIronBarcode
CameraView kontrola XAMLUsuń — użyj Button + MediaPicker.CapturePhotoAsync()
OnDetectionFinished zdarzenieBarcodeReader.Read(imageBytes) wartość zwracana
OnDetectionFinishedEventArg eIEnumerable wynik z BarcodeReader.Read()
e.BarcodeResultsWartość zwrotna BarcodeReader.Read()
e.BarcodeResults.FirstOrDefault()results.FirstOrDefault()
barcode.DisplayValueresult.Value
barcode.BarcodeFormatresult.Format
BarcodeFormats="All"Wykrywane automatycznie — nie wymaga konfiguracji
CameraEnabled="True"await MediaPicker.CapturePhotoAsync()
Tylko iOS + AndroidiOS, Android, Windows, macOS MAUI
Brak pliku wejściowegoBarcodeReader.Read(filePath)
Brak pliku PDFBarcodeReader.Read("document.pdf")
Brak generacjiBarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode()
iOS UPC-A zwraca 13 cyfrZwraca prawidłowe 12 cyfr — nie jest wymagana normalizacja
PDF417 zawodnyObsługiwane

Typowe problemy związane z migracją i ich rozwiązania

Problem 1: Utrata funkcji podglądu na żywo

BarcodeScanning.MAUI: Kontrola CameraView osadzała podgląd kamery bezpośrednio w stronie MAUI. Użytkownicy mogli zobaczyć obraz z kamery i skierować ją na BarCode — wykrywanie odbywało się automatycznie, bez konieczności naciskania przycisku.

Rozwiązanie: MediaPicker.CapturePhotoAsync() pokazuje ekran kamery platformy zamiast tego. W przypadku większości procesów biznesowych jest to dopuszczalne. W aplikacjach konsumenckich, które wymagają ciągłego podglądu na żywo, ramki z kamery mogą być przekazywane bezpośrednio do BarcodeReader.Read():

using IronBarCode;

// Continuous scanning: pass camera frame bytes to BarcodeReader.Read()
// (frame capture depends on your MAUI camera frame source)
private void ProcessCameraFrame(byte[] frameBytes)
{
    var results = BarcodeReader.Read(frameBytes);
    if (results.Any())
    {
        var first = results.First();
        MainThread.BeginInvokeOnMainThread(() =>
            ResultLabel.Text = first.Value);
    }
}

Wymaga to podłączenia źródła klatek z kamery oddzielnie od IronBarcode. Zanim zdecydujesz się na tę opcję, zastanów się, czy podgląd na żywo jest naprawdę potrzebny, czy wystarczy interfejs użytkownika kamery systemowej.

Problem 2: Zmiany nazw właściwości i enumów w e.BarcodeResults

BarcodeScanning.MAUI: barcode.DisplayValue zwraca rozszyfrowany ciąg znaków; barcode.BarcodeFormat zwraca wartość wyliczania z biblioteki BarcodeScanning.

Rozwiązanie: Zamień DisplayValue na result.Value i barcode.BarcodeFormat na result.Format. Schemat iteracji jest taki sam:

// Before
foreach (var barcode in e.BarcodeResults)
    Console.WriteLine(barcode.DisplayValue);

// After
var results = BarcodeReader.Read(imageBytes);
foreach (var result in results)
    Console.WriteLine(result.Value);

Problem 3: Marshaling wątków dla aktualizacji interfejsu użytkownika

BarcodeScanning.MAUI: OnDetectionFinished działa w tle, więc wszystkie aktualizacje interfejsu użytkownika wymagają MainThread.BeginInvokeOnMainThread().

Rozwiązanie: Z wzorcem MediaPicker + async, kontynuacja po await zwraca się w kontekście wywołania — zazwyczaj na głównym wątku. Opakowania MainThread.BeginInvokeOnMainThread() wokół wyświetlania wyników można zazwyczaj usunąć, upraszczając kod obsługi.

Problem 4: Uprawnienia kamery MAUI

BarcodeScanning.MAUI: Pakiet dodaje automatycznie uprawnienia do kamer do AndroidManifest.xml i Info.plist jako część konfiguracji.

Rozwiązanie: Przy użyciu IronBarcode z MediaPicker, standardowe uprawnienia do kamer MAUI muszą być obecne ręcznie. Są to te same uprawnienia, których potrzebuje każda aplikacja MAUI dla MediaPicker.CapturePhotoAsync() i zazwyczaj są już ustawione. Zweryfikuj, że android.permission.CAMERA jest zadeklarowane w AndroidManifest.xml i NSCameraUsageDescription jest ustawione w Info.plist przed testowaniem na urządzeniu.

Lista kontrolna migracji BarcodeScanning.MAUI

Zadania przed migracją

Przed wprowadzeniem jakichkolwiek zmian należy przeprowadzić następujące wyszukiwania, aby znaleźć wszystkie wystąpienia BarcodeScanning.Native.Maui:

grep -rn "using BarcodeScanning" --include="*.cs" .
grep -rn "using BarcodeScanning" --include="*.xaml" .
grep -rn "CameraView" --include="*.cs" .
grep -rn "CameraView" --include="*.xaml" .
grep -rn "OnDetectionFinished" --include="*.cs" .
grep -rn "OnDetectionFinishedEventArg" --include="*.cs" .
grep -rn "e\.BarcodeResults" --include="*.cs" .
grep -rn "DisplayValue" --include="*.cs" .
grep -rn "BarcodeFormats\.Upca" --include="*.cs" .
grep -rn "scanner:" --include="*.xaml" .
SHELL

Dokumentuj każde trafienie. Zauważ, które pliki zawierają użycie XAML CameraView (wymagają zmian w XAML) w porównaniu do tych, które zawierają tylko zmiany w kodzie. Zidentyfikuj wszelkie obejścia normalizacji UPC-A, które należy usunąć po migracji.

Zadania związane z aktualizacją kodu

  1. Usuń pakiet BarcodeScanning.Native.Maui NuGet
  2. Zainstaluj pakiet IronBarcode NuGet
  3. Dodaj IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; w MauiProgram.cs lub App.xaml.cs
  4. Zamień using BarcodeScanning; na using IronBarCode; we wszystkich plikach .cs
  5. Usuń deklaracje przestrzeni nazw xmlns:scanner="..." z wszystkich plików XAML
  6. Zamień kontrolki scanner:CameraView w XAML na Button uruchamiający MediaPicker.CapturePhotoAsync()
  7. Usuń połączenia zdarzeń OnDetectionFinished="..." z XAML
  8. Zamień obsługę zdarzeń OnDetectionFinished na obsługę przycisków kliknięcia async używając BarcodeReader.Read()
  9. Zamień barcode.DisplayValue na result.Value wszędzie
  10. Zamień barcode.BarcodeFormat na result.Format wszędzie
  11. Usuń wszystkie obejścia normalizacji BarcodeFormats.Upca + Substring(1)
  12. Dodaj ExpectMultipleBarcodes = true do BarcodeReaderOptions, gdzie wcześniej wykrywanie wielokrotnego kodu kreskowego polegało na e.BarcodeResults zwracającym wiele elementów
  13. Usuń opakowania MainThread.BeginInvokeOnMainThread() z kodu wyświetlania wyników, gdzie asynchroniczny wzorzec czyni je zbędnymi
  14. Zweryfikuj uprawnienia kamer AndroidManifest.xml i Info.plist są obecne

Testy po migracji

  • Sprawdź, czy skanowanie BarCode w systemie iOS działa, a wartości UPC-A są zwracane jako 12-cyfrowe ciągi znaków bez zer wiodących
  • Sprawdź, czy skanowanie BarCode'ów w systemie Android generuje prawidłowe wartości dla wszystkich formatów używanych w aplikacji
  • Sprawdź, czy skanowanie BarCode w Windows MAUI działa, jeśli Windows jest celem kompilacji
  • Przetestuj skanowanie kodów PDF417 na prawdziwych etykietach wysyłkowych, prawach jazdy lub kartach pokładowych, jeśli są one używane
  • Przetestuj scenariusze z wieloma kodami kreskowymi z ExpectMultipleBarcodes = true i potwierdź, że wszystkie kody kreskowe na obrazie są zwracane
  • Zweryfikuj, czy skanowanie wybieracza plików (BarcodeReader.Read(filePath)) działa na wszystkich celach MAUI
  • Sprawdź odczyt BarCode z plików PDF, jeśli była to nowa funkcja dodana wraz z migracją
  • Potwierdź, że serwerowa BarcodeReader.Read() produkuje poprawne wyniki, jeśli dodano komponent backendowy
  • Uruchom wszystkie istniejące testy automatyczne i porównaj wyniki wartości BarCode z wartościami bazowymi sprzed migracji

Kluczowe korzyści wynikające z migracji do IronBarcode

**Pełna obsługa Windows MAUI:**IronBarcode działa na wszystkich czterech platformach MAUI — iOS, Android, Windows i macOS — przy użyciu tego samego kodu i tego samego pakietu. Żadne specyficzne dla platformy wdrożenie kodu kreskowego nie jest potrzebne dla Windows, i żadne bloki #if WINDOWS nie są wymagane w kodzie aplikacji.

Każde Źródło Wejściowe: BarcodeReader.Read() akceptuje ścieżki plików, tablice bajtów, strumienie i dokumenty PDF. Każdy scenariusz związany z kodami kreskowymi — przechwytywanie przez kamerę, przesyłanie plików, obraz z galerii, przetwarzanie plików PDF po stronie serwera — wykorzystuje tę samą metodę statyczną z tym samym typem wyniku.

**Prawidłowe wartości UPC-A:**IronBarcode zwraca prawidłową 12-cyfrową wartość UPC-A na iOS bez żadnego kodu normalizującego w aplikacji. Historyczne dane UPC-A zapisane z zerem wiodącym z powodu działania BarcodeScanning.Native.Maui nie wpływają na dokładność wartości odczytanych po migracji.

Niezawodny PDF417: PDF417 jest w pełni obsługiwany i odczytywany w sposób niezawodny. Etykiety wysyłkowe, prawa jazdy i karty pokładowe są skanowane bez ograniczenia "większość skanów nigdy nie ma miejsca", opisanego w zgłoszeniach na GitHubie dotyczących BarcodeScanning.Native.Maui.

Generowanie Kodów Kreskowych: BarcodeWriter.CreateBarcode() i QRCodeWriter.CreateQrCode() generują Code128, QR, DataMatrix i inne formaty jako pliki PNG lub tablice bajtów. Generowanie i odczyt są dostępne w tym samym pakiecie bez dodatkowych zależności.

Wdrożenie Serwerowe: To samo wywołanie BarcodeReader.Read() działa w ASP.NET, Azure Functions, kontenerach Docker i AWS Lambda. Logika kodów kreskowych na urządzeniach mobilnych i serwerach może korzystać z tego samego interfejsu API, obsługiwać ten sam format i generować ten sam typ wyników bez konieczności utrzymywania dwóch oddzielnych implementacji kodów kreskowych.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta