Saltar al pie de página
USANDO IRONQR

Cómo usar .NET MAUI para un escáner de códigos QR

Con el auge de las aplicaciones móviles que utilizan Códigos QR para una rápida recuperación de información, la necesidad de un escáner de Código QR eficiente y fácil de integrar, así como un escáner de Código de Barras .NET MAUI para escanear Códigos de Barras está creciendo. .NET MAUI (Interfaz de Usuario de Aplicaciones Multiplataforma), el marco multiplataforma de Microsoft, proporciona un entorno unificado para crear aplicaciones en iOS, Android, macOS y Windows. Al escanear códigos QR en una aplicación .NET MAUI, los desarrolladores necesitan una biblioteca intuitiva y potente para gestionar el proceso.

IronQR es una biblioteca popular que permite a los desarrolladores generar y descodificar códigos QR rápida, precisa y confiablemente. Este artículo lo guiará en la integración de IronQR con .NET MAUI para construir un escáner de códigos QR/códigos de barras que pueda funcionar sin problemas en múltiples plataformas.

Cómo implementar el escaneo de códigos de barras QR con IronQR

  1. Crear un proyecto .NET MAUI.
  2. Instalar el paquete NuGet de IronQR.
  3. Configurar permisos para la cámara y el almacenamiento de archivos.
  4. Implementar el escáner de códigos QR.

Introducción a IronQR para aplicaciones móviles .NET MAUI

IronQR es una biblioteca potente y fácil de usar que simplifica la generación y descodificación de códigos QR en aplicaciones .NET, incluidas las aplicaciones móviles .NET MAUI para la funcionalidad de escaneo de códigos QR y códigos de barras. Proporciona soluciones rápidas y confiables para integrar la funcionalidad de escaneo de códigos QR y códigos de barras en plataformas como iOS, Android, macOS y Windows, lo cual es esencial para construir aplicaciones móviles multiplataforma.

Características de IronQR para aplicaciones móviles .NET MAUI

  • Soporte multiplataforma: Funciona sin problemas en plataformas iOS, Android, macOS y Windows dentro de las aplicaciones MAUI.
  • Escaneo de códigos QR: Descifra eficientemente varios tipos de códigos QR (URL, texto, información de contacto, etc.). También admite múltiples códigos de barras leídos con algoritmos de detección de códigos de barras eficientes.
  • Generación de códigos QR: Esto permite la generación fácil de códigos QR a partir de datos como URLs, textos y más.
  • Manejo de permisos de cámara: Maneja automáticamente las solicitudes de permiso de cámara, simplificando el proceso de escaneo.
  • Alto rendimiento: Escaneo y generación de códigos QR rápida y confiable con un uso mínimo de recursos.
  • Configuraciones personalizables: Ofrece opciones de personalización para parámetros de escaneo y apariencia de códigos QR.
  • Integración fácil: API simple y configuración mínima requerida para agregar escaneo y generación de códigos QR a su aplicación .NET MAUI.
  • Manejo de errores: Proporciona mensajes de error detallados y resolución de problemas, asegurando una funcionalidad fluida en varios escenarios.
  • Sin dependencias externas: IronQR opera de manera independiente, reduciendo la necesidad de bibliotecas de terceros o configuraciones complejas, a diferencia del escáner de código de barras ZXing.
  • Soporte de múltiples formatos: Admite múltiples formatos de códigos QR, asegurando la compatibilidad con una amplia gama de códigos QR utilizados en el mundo real.

Prerrequisitos

Antes de proceder con la implementación, asegúrese de tener los siguientes prerrequisitos:

  1. Visual Studio 2022 o posterior instalado.
  2. .NET 6.0 SDK o posterior (ya que .NET MAUI está construido sobre .NET 6 y versiones posteriores).
  3. Paquete NuGet IronQR para escaneo de códigos QR y detección de códigos de barras.
  4. Aplicación .NET MAUI (Puede crear una nueva aplicación MAUI en Visual Studio si aún no tiene una).

Paso 1: Crear un proyecto .NET MAUI

Para comenzar, vamos a crear un proyecto .NET MAUI simple:

  1. Abra Visual Studio y haga clic en Crear un nuevo proyecto.
  2. Seleccione la plantilla de Aplicación .NET MAUI.

Nuevo proyecto

  1. Nombre el proyecto (por ejemplo, MauiQRCodeScanner), seleccione una ubicación y haga clic en Siguiente.

Configuración del proyecto

Seleccione la versión requerida de .NET y haga clic en Crear.

Marco de trabajo objetivo

Paso 2: Instale el paquete NuGet de IronQR

IronQR es una biblioteca de terceros que proporciona funcionalidades de generación y escaneo de códigos QR. Para instalar IronQR, necesita agregarlo a través de NuGet:

  1. En Visual Studio, haga clic derecho en Dependencias en su Explorador de soluciones.
  2. Haga clic en Administrar paquetes NuGet.
  3. En la pestaña Examinar, busque IronQR y haga clic en Instalar en el paquete relevante (generalmente IronQR o IronQR.Maui si está disponible específicamente para MAUI).
  4. Acepte cualquier licencia y asegúrese de que la biblioteca se instale.

    IronQR

Paso 3: Configurar permisos para la cámara y el almacenamiento de archivos

Para que su aplicación escanee códigos QR, necesitará solicitar permisos de cámara en plataformas móviles (iOS y Android). Aquí se explica cómo puede agregar los siguientes permisos.

Androide

En el archivo AndroidManifest.xml, agregue el permiso de cámara:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
XML

iOS

En el archivo Info.plist, agregue la descripción del uso de la cámara:

<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan QR codes</string>
<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan QR codes</string>
XML

Paso 4: Implementar el escáner de código QR

Ahora, vamos a crear una interfaz de usuario simple para nuestro escáner de códigos QR en la aplicación de escáner de código de barras MAUI. Utilizaremos el botón para activar el proceso de escaneo y una etiqueta para mostrar el texto del código QR escaneado.

Edite el archivo MainPage.xaml en el espacio de nombres XML.

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="MauiQRCodeScanner.MainPage">

    <StackLayout Padding="20" VerticalOptions="Center">
        <Button x:Name="scanButton" Text="Scan QR Code" Clicked="OnScanButtonClicked" />
        <Label x:Name="resultLabel" Text="Scan Result will appear here" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
    </StackLayout>
</ContentPage>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="MauiQRCodeScanner.MainPage">

    <StackLayout Padding="20" VerticalOptions="Center">
        <Button x:Name="scanButton" Text="Scan QR Code" Clicked="OnScanButtonClicked" />
        <Label x:Name="resultLabel" Text="Scan Result will appear here" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
    </StackLayout>
</ContentPage>
XML

Ahora, en el MainPage.xaml.cs, manejará los permisos de la cámara y la lógica del escaneo de códigos QR. Aquí está cómo implementarlo:

using IronQrCode;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Essentials;

namespace MauiQRCodeScanner
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            License.LicenseKey = "Your key";  // Add your IronQR license key here
            InitializeComponent();
        }

        // OnScanButtonClicked method with object sender as input
        private async void OnScanButtonClicked(object sender, EventArgs e)
        {
            // Check for camera permission
            var status = await Permissions.RequestAsync<Permissions.Camera>();
            if (status != PermissionStatus.Granted)
            {
                await DisplayAlert("Permission Denied", "Cannot scan QR codes without camera permission", "OK");
                return;
            }

            // Start scanning QR codes
            try
            {
                var images = await FilePicker.Default.PickAsync(new PickOptions
                {
                    PickerTitle = "Pick image",
                    FileTypes = FilePickerFileType.Images
                });
                var imageSource = images.FullPath.ToString();

                var inputBmp = AnyBitmap.FromFile(imageSource);
                // Load the asset into QrImageInput
                QrImageInput imageInput = new QrImageInput(inputBmp);

                // Create a QR Reader object
                QrReader reader = new QrReader();

                // Read the input and get all embedded QR Codes
                IEnumerable<QrResult> results = reader.Read(imageInput);

                if (results.Any())
                {
                    resultLabel.Text = "Scanned Text: " + results.First().Value; 
        // Display the result
                }
                else
                {
                    resultLabel.Text = "No QR code detected";
                }
        }
        catch (Exception ex)
        {
            resultLabel.Text = "Error: " + ex.Message;
        }
        }
    }
}
using IronQrCode;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Essentials;

namespace MauiQRCodeScanner
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            License.LicenseKey = "Your key";  // Add your IronQR license key here
            InitializeComponent();
        }

        // OnScanButtonClicked method with object sender as input
        private async void OnScanButtonClicked(object sender, EventArgs e)
        {
            // Check for camera permission
            var status = await Permissions.RequestAsync<Permissions.Camera>();
            if (status != PermissionStatus.Granted)
            {
                await DisplayAlert("Permission Denied", "Cannot scan QR codes without camera permission", "OK");
                return;
            }

            // Start scanning QR codes
            try
            {
                var images = await FilePicker.Default.PickAsync(new PickOptions
                {
                    PickerTitle = "Pick image",
                    FileTypes = FilePickerFileType.Images
                });
                var imageSource = images.FullPath.ToString();

                var inputBmp = AnyBitmap.FromFile(imageSource);
                // Load the asset into QrImageInput
                QrImageInput imageInput = new QrImageInput(inputBmp);

                // Create a QR Reader object
                QrReader reader = new QrReader();

                // Read the input and get all embedded QR Codes
                IEnumerable<QrResult> results = reader.Read(imageInput);

                if (results.Any())
                {
                    resultLabel.Text = "Scanned Text: " + results.First().Value; 
        // Display the result
                }
                else
                {
                    resultLabel.Text = "No QR code detected";
                }
        }
        catch (Exception ex)
        {
            resultLabel.Text = "Error: " + ex.Message;
        }
        }
    }
}
Imports IronQrCode
Imports Microsoft.Maui.Controls
Imports Microsoft.Maui.Essentials

Namespace MauiQRCodeScanner
	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			License.LicenseKey = "Your key" ' Add your IronQR license key here
			InitializeComponent()
		End Sub

		' OnScanButtonClicked method with object sender as input
		Private Async Sub OnScanButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
			' Check for camera permission
			Dim status = Await Permissions.RequestAsync(Of Permissions.Camera)()
			If status <> PermissionStatus.Granted Then
				Await DisplayAlert("Permission Denied", "Cannot scan QR codes without camera permission", "OK")
				Return
			End If

			' Start scanning QR codes
			Try
				Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
					.PickerTitle = "Pick image",
					.FileTypes = FilePickerFileType.Images
				})
				Dim imageSource = images.FullPath.ToString()

				Dim inputBmp = AnyBitmap.FromFile(imageSource)
				' Load the asset into QrImageInput
				Dim imageInput As New QrImageInput(inputBmp)

				' Create a QR Reader object
				Dim reader As New QrReader()

				' Read the input and get all embedded QR Codes
				Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

				If results.Any() Then
					resultLabel.Text = "Scanned Text: " & results.First().Value
		' Display the result
				Else
					resultLabel.Text = "No QR code detected"
				End If
		Catch ex As Exception
			resultLabel.Text = "Error: " & ex.Message
		End Try
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Explicación del código

  • Permisos: Solicitamos permisos de cámara usando Permissions.RequestAsync<Permissions.Camera>(). Si se deniega el permiso, se muestra una alerta al usuario.
  • Escáner IronQR : Usar objetos y métodos de la biblioteca IronQR para escanear códigos QR. El método QrReader.Read() intenta decodificar los códigos QR y el resultado se muestra en la etiqueta.

Introducir código QR

Entrada de código QR

Producción

Salida de código QR

Seleccione el código QR requerido o cápturelo desde el feed de la cámara.

Seleccione el código QR

El resultado se muestra en la interfaz como se indica.

Salida de la interfaz de usuario de código QR

Licencia IronQR (versión de prueba disponible)

IronQR funciona con una clave de licencia en el código de la aplicación móvil. Los desarrolladores pueden obtener fácilmente una licencia de prueba desde la página de licencia. Coloque la licencia en algún lugar del código como se muestra a continuación antes de usar la biblioteca IronQR.

License.LicenseKey = "Your License";
License.LicenseKey = "Your License";
License.LicenseKey = "Your License"
$vbLabelText   $csharpLabel

Conclusión

En este artículo, recorrimos el proceso de construcción de un escáner de códigos QR en una aplicación .NET MAUI usando IronQR. Comenzamos configurando una aplicación .NET MAUI, instalamos el paquete IronQR e implementamos la interfaz de usuario y la lógica de escaneo. IronQR hace que el escaneo de códigos QR en una aplicación .NET MAUI sea increíblemente simple y efectivo.

La biblioteca IronQR está diseñada para ser multiplataforma, asegurando que las aplicaciones construidas con .NET MAUI puedan acceder a la funcionalidad de códigos QR de manera consistente en todos los dispositivos objetivo, ya sean teléfonos inteligentes, tabletas o sistemas de escritorio. IronQR también admite funciones como el manejo automático de permisos de cámara, lo que facilita integrar el escaneo de códigos QR sin la molestia de gestionar permisos manualmente.

En resumen, IronQR para .NET MAUI permite a los desarrolladores implementar rápidamente las características de escaneo y generación de códigos QR en sus aplicaciones móviles, agilizando el desarrollo y mejorando la experiencia del usuario en todas las plataformas.

Preguntas Frecuentes

¿Cómo puedo integrar un escáner de código QR en una aplicación .NET MAUI?

Para integrar un escáner de código QR en una aplicación .NET MAUI, utiliza la biblioteca IronQR instalándola a través de NuGet, y usa QrReader.Read() para decodificar códigos QR.

¿Cuáles son los pasos para crear un proyecto .NET MAUI para escaneo de QR?

Comienza abriendo Visual Studio, crea un nuevo proyecto usando la plantilla de aplicación .NET MAUI, y elige la versión .NET necesaria. Luego, instala la biblioteca IronQR para implementar el escaneo de QR.

¿Qué permisos son esenciales para el escaneo de QR en aplicaciones .NET MAUI?

El escaneo de QR requiere permisos de cámara. En Android, agrega los permisos necesarios en AndroidManifest.xml, y en iOS, actualiza el Info.plist con una descripción del uso de la cámara.

¿Cómo gestiono los permisos de cámara en una aplicación .NET MAUI?

Usa Permissions.RequestAsync<Permissions.Camera>() para solicitar permisos de cámara. Maneja la denegación mostrando una alerta para informar al usuario.

¿Cuáles son los beneficios de usar la biblioteca IronQR para el escaneo de QR?

IronQR ofrece soporte multiplataforma, alto rendimiento, configuraciones personalizables, manejo automático de permisos de cámara y soporte para múltiples formatos, lo que lo hace ideal para aplicaciones .NET MAUI.

¿Cómo puedo solucionar problemas de escaneo de códigos QR en mi aplicación .NET MAUI?

Asegúrate de que la biblioteca IronQR esté instalada correctamente, que se hayan otorgado permisos de cámara y que la cámara del dispositivo funcione. Revisa cualquier error en el código utilizando bloques try-catch.

¿Qué se requiere para comenzar a desarrollar con .NET MAUI y escaneo de QR?

Necesitas Visual Studio 2022 o posterior, el SDK de .NET 6.0 o más reciente, y el paquete NuGet de IronQR para facilitar el escaneo de códigos QR y la detección de códigos de barras.

¿Cómo obtengo una licencia de prueba para una biblioteca de códigos QR?

Visita la página de licencias de IronQR para obtener una clave de licencia de prueba. Inserta la clave de licencia en tu código antes de utilizar las funciones de IronQR.

¿Qué formatos soporta la biblioteca IronQR para el escaneo de QR?

IronQR soporta múltiples formatos de códigos QR y códigos de barras, asegurando que se pueda utilizar en diferentes aplicaciones y plataformas.

¿Cómo puedo generar códigos QR en una aplicación .NET?

Usa los métodos de la biblioteca IronQR para generar códigos QR de manera eficiente, permitiéndote personalizar las configuraciones según las necesidades de tu aplicación.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más