Zugriff auf Plattformfunktionen in Blazor Hybrid
Wir erstellen Hybrid-Apps mit .NET, was bedeutet, dass wir Zugriff auf alle .NET-Klassenbibliotheken haben. Zusätzlich zu diesen APIs ermöglicht das Erstellen von Blazor Hybrid-Apps mit .NET MAUI nicht nur die Bereitstellung auf mehreren Plattformen, es ermöglicht auch den Zugriff auf die nativen APIs jeder Plattform. Dies bedeutet, dass Sie, wenn Sie Plattformfunktionen von iOS, Android, macOS oder Windows integrieren müssen, alles in C# erledigen können. Sie können direkt über Ihre Blazor-Komponenten auf diese APIs zugreifen oder freigegebene .NET MAUI-Klassenbibliotheken erstellen.
Plattformintegration
Jede Plattform, die .NET MAUI unterstützt, bietet eindeutige Betriebssystem- und Plattform-APIs, auf die Sie über C# zugreifen können. .NET MAUI bietet plattformübergreifende APIs für den Zugriff auf viele dieser Plattformfunktionen, die den Zugriff auf Sensoren, den Zugriff auf Informationen über das Gerät, auf dem eine App ausgeführt wird, die Überprüfung der Netzwerkkonnektivität, das sichere Speichern von Daten und das Initiieren von browserbasierten Authentifizierungsflüssen umfasst.
.NET MAUI trennt diese plattformübergreifenden APIs in verschiedene Funktionalitätsbereiche:
- Anwendungsmodell: App-Funktionalität, einschließlich App-Aktionen, Anwendungsinformationen, Öffnen des Browsers, Öffnen von URIs, Öffnen von Karten, Behandeln von Berechtigungen und Versionsverfolgung
- Kommunikation: Zugriff auf Kontakte, E-Mails, Netzwerke, Telefonwählhilfe, SMS-Nachrichten und Webauthentifizierung
- Gerätefeatures: Informationen und Zugriff auf Akku, Anzeigeinformationen, Geräteinformationen, Sensoren, Taschenlampe, Geocodierung, Geolocation, haptisches Feedback und Vibrationen
- Medien: Einschließlich Medienauswahl, Screenshots, Text zu Sprache und Einheitenkonverter
- Freigabe: Einschließen des Zugriffs auf die Zwischenablage und Freigeben von Dateien oder Text für andere Anwendungen
- Speicher: APIs für die Auswahl von Dateien, Dateisystemhilfsprogramme, Einstellungen und sicheren Speicher
Wenn eine Anwendung feststellen muss, ob der Internetzugang auf dem Gerät verfügbar ist, kann sie die Connectivity API in Microsoft.Maui.Networking verwenden:
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
Zugriff auf Plattform-APIs
Mit den plattformabhängigen Funktionen von .NET MAUI können Sie bestimmte Funktionalitäten nutzen, die nur auf einer bestimmten Plattform verfügbar sind. Weitere Informationen: Verweisen Sie auf Android-Plattformspezifische, iOS-Plattformspezifische und Windows-Plattformspezifische.
In Situationen, in denen .NET MAUI keine APIs für den Zugriff auf bestimmte Plattform-APIs bereitstellt, können Sie Ihren eigenen Code schreiben, um auf die erforderlichen Plattform-APIs zuzugreifen. Weitere Informationen hierzu erfahren Sie unter Aufrufen von Plattformcode.
Sie können Plattformcode aus plattformübergreifendem Code aufrufen, indem Sie die bedingte Kompilierung für verschiedene Plattformen verwenden.
Das folgende Beispiel zeigt die DeviceOrientation Aufzählung, die Sie zum Angeben der Geräteausrichtung verwenden:
namespace InvokePlatformCodeDemos.Services
{
public enum DeviceOrientation
{
Undefined,
Landscape,
Portrait
}
}
Zum Abrufen der Geräteausrichtung ist das Schreiben von Plattformcode erforderlich, den Sie ausführen können, indem Sie eine Methode schreiben, die die bedingte Kompilierung für verschiedene Plattformen verwendet:
#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 ", wobei jeder untergeordnete Ordner eine Plattform darstellt, auf die .NET MAUI abzielen kann. Jeder Zielplattformordner enthält plattformspezifischen Code, der die App auf dieser Plattform startet, sowie einen anderen plattformspezifischen Code, den Sie hinzufügen. Zur Build-Zeit schließt das Build-System nur den Code aus jedem Ordner ein, wenn es für diese spezifische Plattform erstellt wird. Wenn Sie beispielsweise für Android bauen, werden die Dateien im Ordner Plattformen>Android in das App-Paket eingebaut, aber die Dateien in den anderen Plattformen-Ordnern werden nicht eingebaut. Bei diesem Ansatz wird ein Feature namens Multitargeting verwendet, um mehrere Plattformen aus einem einzelnen Projekt zu erreichen. Sie können Multitargeting mit partiellen Klassen und partiellen Methoden kombinieren, 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.