Accéder aux fonctionnalités de la plateforme dans Blazor Hybrid
Nous compilons 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 Blazor Hybrid avec .NET MAUI vous permet non seulement de déployer sur plusieurs plateformes, elle permet é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 le faire en C#. Vous pouvez accéder directement à ces API à 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 uniques de système d’exploitation et de plateforme 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, vérifie la connectivité réseau, le stockage sécurisé des données et lance des flux d’authentification basés sur le navigateur.
.NET MAUI sépare ces API multiplateformes dans différentes zones de fonctionnalité :
- 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 des cartes, la gestion des autorisations et le suivi des versions
- Communication : Accès aux contacts, aux e-mails, à la mise en 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, aux informations d’affichage, aux informations sur l’appareil, aux capteurs, à la lampe de poche, au géocodage, à la géolocalisation, aux commentaires haptiques et vibrations
- Multimédia : Notamment le sélecteur de médias, les captures d’écran, les synthèses vocales et les convertisseurs d’unités
- Partage: Notamment 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, l’assistance du système de fichiers, de préférences et de stockage sécurisé
Si une application nécessaire pour détecter si l’accès à Internet était disponible sur l’appareil, l’API Connectivity
dans Microsoft.Maui.Networking
peut être utilisée :
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
API de plateforme d’accès
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 à des 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 Appeler le code de la plateforme.
Vous pouvez appeler le 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. Vous pouvez le réaliser 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 la 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 compilation inclut uniquement le code de chaque dossier lors de la compilation de cette plateforme spécifique. Lorsque vous générez par exemple pour Android, les fichiers disponibles dans le dossier Plateformes>Android sont intégrés au package d’application, mais les fichiers des autres dossiers dans Plateformes ne sont pas. Cette approche utilise une fonctionnalité appelée multi-ciblage pour cibler plusieurs plateformes à partir d’un seul projet. Vous pouvez combiner le multi-ciblage avec des classes et des méthodes partielles pour appeler des fonctionnalités de la plateforme à partir du code multiplateforme.
Dans l’exercice suivant, nous allons utiliser une combinaison d’API .NET et .NET MAUI pour enregistrer et charger notre liste de tâches.