Acceso a las características de la plataforma en Blazor Hybrid
Estamos creando aplicaciones híbridas con .NET, lo que significa que tenemos acceso a todas las bibliotecas de clases de .NET. Además de estas API, la creación de aplicaciones híbridas de Blazor con .NET MAUI no solo le permite implementar en varias plataformas, sino que también permite el acceso a las API nativas de cada plataforma. Esto significa que si necesita integrar funcionalidades de plataforma de iOS, Android, macOS o Windows, puede hacerlo todo en C#. Puede acceder a estas API directamente desde los componentes de Blazor o crear bibliotecas de clases de .NET MAUI compartidas.
Integración de la plataforma
Cada plataforma que .NET MAUI admite ofrece un sistema operativo y API de plataforma únicos a las que puede acceder desde C#. .NET MAUI proporciona API multiplataforma para acceder a gran parte de esta funcionalidad de plataforma, que incluye el acceso a sensores, el acceso a información sobre el dispositivo en el que se ejecuta una aplicación, la comprobación de la conectividad de red, el almacenamiento de datos de forma segura y el inicio de flujos de autenticación basados en explorador.
.NET MAUI separa estas API multiplataforma en diferentes áreas de funcionalidad:
- Modelo de aplicación: Funcionalidad de la aplicación, incluidas las acciones de la aplicación, la información de la aplicación, la apertura del explorador, la apertura de direcciones URI, la apertura de mapas, el control de permisos y el seguimiento de versiones
- Comunicación: Acceso a contactos, correo electrónico, redes, marcador telefónico, mensajería SMS y autenticación web
- Características del dispositivo: Información y acceso a la batería, información de pantalla, información del dispositivo, sensores, linterna, geocodificación, geolocalización, comentarios hápticos y vibración
- Multimedia: Incluye selector de medios, capturas de pantalla y convertidores de texto a voz y de unidades
- Uso compartido: Incluye el acceso al Portapapeles y el uso compartido de archivos o texto a otras aplicaciones
- Almacenamiento: API para seleccionar archivos, asistentes del sistema de archivos, preferencias y almacenamiento seguro
Si una aplicación necesitara detectar si el acceso a Internet estaba disponible en el dispositivo, se podría usar la API Connectivity
en Microsoft.Maui.Networking
:
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
Acceso a las API de plataforma
Las características específicas de la plataforma de .NET MAUI permiten consumir funcionalidades específicas que solo están disponibles en una plataforma específica. Para más información, consulte Características específicas de la plataforma Android, Características específicas de la plataforma iOS y Características específicas de la plataforma Windows.
En situaciones en las que .NET MAUI no proporciona ninguna API para acceder a API de plataforma específicas, puede escribir su propio código para acceder a las API de plataforma necesarias. Para obtener más información, consulte Invocar código de plataforma.
Puede invocar código de plataforma desde código multiplataforma mediante la compilación condicional para dirigirse a distintas plataformas.
En el ejemplo siguiente, se muestra la enumeración DeviceOrientation
, que se usa para especificar la orientación del dispositivo:
namespace InvokePlatformCodeDemos.Services
{
public enum DeviceOrientation
{
Undefined,
Landscape,
Portrait
}
}
La recuperación de la orientación del dispositivo requiere escribir código de plataforma. Para ello, escriba un método que use la compilación condicional para dirigirse a distintas plataformas:
#if ANDROID
using Android.Content;
using Android.Views;
using Android.Runtime;
#elif IOS
using UIKit;
#endif
using InvokePlatformCodeDemos.Services;
namespace InvokePlatformCodeDemos.Services.ConditionalCompilation
{
public class DeviceOrientationService
{
public DeviceOrientation GetOrientation()
{
#if ANDROID
IWindowManager windowManager = Android.App.Application.Context.GetSystemService(Context.WindowService).JavaCast<IWindowManager>();
SurfaceOrientation orientation = windowManager.DefaultDisplay.Rotation;
bool isLandscape = orientation == SurfaceOrientation.Rotation90 || orientation == SurfaceOrientation.Rotation270;
return isLandscape ? DeviceOrientation.Landscape : DeviceOrientation.Portrait;
#elif IOS
UIInterfaceOrientation orientation = UIApplication.SharedApplication.StatusBarOrientation;
bool isPortrait = orientation == UIInterfaceOrientation.Portrait || orientation == UIInterfaceOrientation.PortraitUpsideDown;
return isPortrait ? DeviceOrientation.Portrait : DeviceOrientation.Landscape;
#else
return DeviceOrientation.Undefined;
#endif
}
}
}
Un proyecto de aplicación de .NET MAUI contiene una carpeta Plataformas, con cada carpeta secundaria que representa una plataforma que .NET MAUI puede tener como destino. Cada carpeta de plataforma de destino contiene código específico de la plataforma que inicia la aplicación en esa plataforma, además de cualquier otro código de plataforma que agregue. En tiempo de compilación, el sistema de compilación solo incluye el código de cada carpeta al compilar para esa plataforma específica. Por ejemplo, al compilar para Android, los archivos de la carpeta Plataformas>Android están integrados en el paquete de la aplicación, pero los archivos de las otras carpetas Plataformas no. Este enfoque usa una característica denominada destino múltiple que pretende tener como destino varias plataformas desde un único proyecto. Puede combinar varios destinos con clases parciales y métodos parciales para invocar la funcionalidad de la plataforma desde código multiplataforma.
En el ejercicio siguiente, usaremos una combinación de API de .NET y API de .NET MAUI para guardar y cargar nuestra lista de tareas pendientes.