Zugreifen auf Plattformfeatures in Blazor Hybrid
Wir entwickeln hybride Apps mit .NET, d. h. wir haben Zugriff auf alle .NET-Klassenbibliotheken. Zusätzlich zu diesen APIs ermöglicht Ihnen die Erstellung von Blazor Hybrid-Anwendungen mit .NET MAUI nicht nur die Bereitstellung auf mehreren Plattformen, sondern auch den Zugriff auf die nativen APIs jeder Plattform. Wenn Sie also Plattformfunktionen von iOS, Android, macOS oder Windows integrieren müssen, können Sie dies in C# tun. Sie können auf diese APIs direkt von Ihren Blazor-Komponenten aus zugreifen oder gemeinsam genutzte .NET MAUI-Klassenbibliotheken erstellen.
Plattformintegration
Jede Plattform, die .NET MAUI unterstützt, bietet einzigartige Betriebssystem- und Plattform-APIs, auf die Sie von C# aus zugreifen können. .NET MAUI bietet plattformübergreifende APIs für den Zugriff auf einen Großteil dieser Plattformfunktionalität. Dazu gehören der Zugriff auf Sensoren, der Zugriff auf Informationen über das Gerät, auf dem eine App ausgeführt wird, die Überprüfung der Netzwerkkonnektivität, die sichere Speicherung von Daten und die Initiierung browserbasierter Authentifizierungsabläufe.
.NET MAUI unterteilt diese plattformübergreifenden APIs in verschiedene Funktionsbereiche:
- Anwendungsmodell: App-Funktionalität wie z. B. App-Aktionen, Anwendungsinformationen, Öffnen des Browsers, Öffnen von URIs, Öffnen von Karten, Verarbeitung von Berechtigungen und Versionsverfolgung
- Kommunikation: Zugriff auf Kontakte, E-Mail, Netzwerk, Wählhilfe, SMS-Nachrichten und Webauthentifizierung
- Gerätefeatures: Informationen und Zugriff auf Akku, Displayinformationen, Geräteinformationen, Sensoren, Taschenlampe, Geocodierung, Geolocation, haptisches Feedback und Vibration
- Medien: Einschließlich Medienauswahl, Screenshots, Sprachsynthese und Einheitenkonverter
- Freigabe: Einschließlich Zugriff auf die Zwischenablage und die Freigabe von Dateien oder Text für andere Anwendungen
- Speicher: APIs für die Auswahl von Dateien, Hilfsprogramme für das Dateisystem, Einstellungen und sichere Speicherung
Wenn eine Anwendung ermitteln muss, ob auf dem Gerät ein Internetzugang verfügbar ist, kann die Connectivity
-API in Microsoft.Maui.Networking
verwendet werden:
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
Zugreifen auf Plattform-APIs
Die plattformspezifischen Eigenschaften von .NET MAUI ermöglichen es Ihnen, bestimmte Funktionen zu nutzen, die nur auf einer bestimmten Plattform verfügbar sind. Weitere Informationen finden Sie unter Android-Plattformeigenschaften, iOS-Plattformeigenschaften und Windows-Plattformeigenschaften.
Für Situationen, in denen .NET MAUI keine APIs für den Zugriff auf bestimmte Plattform-APIs bereitstellt, können Sie für den Zugriff auf die erforderlichen Plattform-APIs eigenen Code schreiben. Weitere Informationen finden Sie unter Aufrufen von Plattformcode.
Sie können Plattformcode aus plattformübergreifendem Code aufrufen, indem Sie die bedingte Kompilierung verwenden, um verschiedene Plattformen anzusteuern.
Das folgende Beispiel zeigt die DeviceOrientation
-Enumeration. Diese wird verwendet, um die Ausrichtung Ihres Geräts anzugeben:
namespace InvokePlatformCodeDemos.Services
{
public enum DeviceOrientation
{
Undefined,
Landscape,
Portrait
}
}
Um die Ausrichtung Ihres Geräts abzurufen, müssen Sie Plattformcode schreiben. Dazu kann eine Methode geschrieben werden, die eine bedingte Kompilierung verwendet, um verschiedene Plattformen anzusprechen:
#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
}
}
}
Ein .NET MAUI-App-Projekt enthält einen Ordner Platforms, bei dem jeder untergeordnete Ordner eine Plattform repräsentiert, auf die .NET MAUI ausgerichtet werden kann. Jeder Zielplattform-Ordner enthält plattformspezifischen Code, mit dem die Anwendung auf der jeweiligen Plattform gestartet wird, sowie jeglichen weiteren Plattformcode, den Sie hinzufügen. Zur Buildzeit schließt das Buildsystem nur den Code aus den betreffenden Ordnern ein, wenn ein Build für die jeweilige Plattform erstellt wird. Wenn Sie zum Beispiel einen Build für Android erstellen, werden die Dateien im Ordner Platforms> Android in das App-Paket integriert, die Dateien in den anderen Platforms-Ordnern jedoch nicht. Dieser Ansatz nutzt ein Feature, die als Multi-Targeting bezeichnet wird, um mehrere Plattformen mit einem einzigen Projekt anzusteuern. Das Multi-Targeting kann mit partiellen Klassen und partiellen Methoden kombiniert werden, um Plattformfunktionen aus plattformübergreifendem Code aufzurufen.
In der nächsten Übung verwenden wir eine Kombination aus .NET-APIs und .NET MAUI-APIs, um unsere Aufgabenliste zu speichern und zu laden.