Accéder aux fonctionnalités de la plateforme dans Blazor Hybrid
Nous créons des applications hybrides avec .NET, ce qui signifie que nous avons accès à toutes les bibliothèques de classes .NET. En plus de ces API, la création d’applications Hybrides Blazor avec .NET MAUI vous permet non seulement de déployer sur plusieurs plateformes, mais également d’accéder aux API natives de chaque plateforme. Cela signifie que si vous devez intégrer des fonctionnalités de plateforme d’iOS, Android, macOS ou Windows, vous pouvez tout faire en C#. Vous pouvez accéder à ces API directement à partir de vos composants Blazor ou créer des bibliothèques de classes .NET MAUI partagées.
Intégration de la plateforme
Chaque plateforme prise en charge par .NET MAUI offre des API de système d’exploitation et de plateforme uniques auxquelles vous pouvez accéder à partir de C#. .NET MAUI fournit des API multiplateformes pour accéder à une grande partie de cette fonctionnalité de plateforme, qui inclut l’accès aux capteurs, l’accès aux informations sur l’appareil sur lequel une application s’exécute, la vérification de la connectivité réseau, le stockage sécurisé des données et le lancement de flux d’authentification basés sur le navigateur.
.NET MAUI sépare ces API multiplateformes en différentes zones de fonctionnalités :
- Modèle d’application : fonctionnalités d’application, notamment les actions d’application, les informations d’application, l’ouverture du navigateur, l’ouverture d’URI, l’ouverture de cartes, la gestion des autorisations et le suivi des versions
- Communication : accès aux contacts, aux e-mails, au réseau, au numéroteur téléphonique, à la messagerie sms et à l’authentification web
- Fonctionnalités de l’appareil : informations et accès à la batterie, informations d’affichage, informations sur l’appareil, capteurs, lampe de flash, géocodage, géolocalisation, commentaires haptiques et vibrations
- Média : y compris le sélecteur de médias, les captures d’écran, la synthèse vocale et les convertisseurs d’unités
- Partage : y compris l’accès au Presse-papiers et le partage de fichiers ou de texte à d’autres applications
- Stockage : API pour la sélection de fichiers, d’assistance de système de fichiers, de préférences et de stockage sécurisé
Si une application devait détecter si l’accès Internet était disponible sur l’appareil, il pouvait utiliser l’API Connectivity dans Microsoft.Maui.Networking:
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
Accéder aux API de la plateforme
Les spécificités de la plateforme .NET MAUI vous permettent de consommer des fonctionnalités spécifiques uniquement disponibles sur une plateforme spécifique. Pour plus d’informations, référencez les spécificités de la plateforme Android, les spécificités de la plateforme iOS et les spécificités de la plateforme Windows.
Dans les situations où .NET MAUI ne fournit aucune API pour accéder aux API de plateforme spécifiques, vous pouvez écrire votre propre code pour accéder aux API de plateforme requises. Pour plus d’informations, référencez le code de plateforme Invoke.
Vous pouvez appeler du code de plateforme à partir de code multiplateforme à l’aide de la compilation conditionnelle pour cibler différentes plateformes.
L’exemple suivant montre l’énumération DeviceOrientation que vous utilisez pour spécifier l’orientation de votre appareil :
namespace InvokePlatformCodeDemos.Services
{
public enum DeviceOrientation
{
Undefined,
Landscape,
Portrait
}
}
La récupération de l’orientation de votre appareil nécessite l’écriture de code de plateforme, que vous pouvez accomplir en écrivant une méthode qui utilise la compilation conditionnelle pour cibler différentes plateformes :
#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 projet d’application .NET MAUI contient un dossier Plateformes , avec chaque dossier enfant représentant une plateforme que .NET MAUI peut cibler. Chaque dossier de plateforme cible contient du code spécifique à la plateforme qui démarre l’application sur cette plateforme, ainsi que tout autre code de plateforme que vous ajoutez. Au moment de la compilation, le système de build inclut uniquement le code de chaque dossier lors de la construction pour cette plateforme spécifique. Par exemple, lorsque vous générez pour Android, les fichiers du dossier Plateformes>Android sont intégrés au package d’application, mais les fichiers des autres dossiers Plateformes ne sont pas. Cette approche utilise une fonctionnalité appelée multitargeting pour cibler plusieurs plateformes à partir d’un seul projet. Vous pouvez combiner le multitargeting avec des classes partielles et des méthodes partielles pour appeler des fonctionnalités de plateforme à partir de code multiplateforme.
Dans l’exercice suivant, nous allons utiliser une combinaison d’API .NET et d’API .NET MAUI pour enregistrer et charger notre liste de tâches.