Uzyskiwanie dostępu do funkcji platformy w rozwiązaniu Blazor Hybrid

Ukończone

Kompilujemy aplikacje hybrydowe za pomocą platformy .NET, co oznacza, że mamy dostęp do wszystkich bibliotek klas platformy .NET. Oprócz tych interfejsów API tworzenie aplikacji hybrydowych platformy Blazor za pomocą interfejsu MAUI platformy .NET nie tylko umożliwia wdrażanie na wielu platformach, ale także umożliwia dostęp do natywnych interfejsów API poszczególnych platform. Oznacza to, że jeśli musisz zintegrować możliwości platformy systemów iOS, Android, macOS lub Windows, możesz to zrobić w języku C#. Dostęp do tych interfejsów API można uzyskać bezpośrednio ze składników platformy Blazor lub utworzyć udostępnione biblioteki klas .NET MAUI.

Integracja platformy

Każda platforma obsługiwana przez program .NET MAUI oferuje unikatowe interfejsy API systemu operacyjnego i platformy, do których można uzyskać dostęp z poziomu języka C#. Program .NET MAUI udostępnia międzyplatformowe interfejsy API umożliwiające uzyskiwanie dostępu do wielu funkcji platformy, które obejmują dostęp do czujników, uzyskiwanie dostępu do informacji o urządzeniu, na którym działa aplikacja, sprawdzanie łączności sieciowej, bezpieczne przechowywanie danych i inicjowanie przepływów uwierzytelniania opartych na przeglądarce.

Program .NET MAUI oddziela te międzyplatformowe interfejsy API w różne obszary funkcjonalności:

  • Model aplikacji: funkcje aplikacji, w tym akcje aplikacji, informacje o aplikacji, otwieranie przeglądarki, otwieranie identyfikatorów URI, otwieranie map, obsługa uprawnień i śledzenie wersji
  • Komunikacja: Dostęp do kontaktów, poczty e-mail, sieci, wybierania numerów telefonicznych, wiadomości sms i uwierzytelniania w Internecie
  • Funkcje urządzenia: informacje i dostęp do baterii, informacje o wyświetlaczu, informacje o urządzeniu, czujniki, latarki, geokodowanie, geolokalizacja, haptyczne opinie i wibracje
  • Multimedia: w tym selektor multimediów, zrzuty ekranu, zamiana tekstu na mowę i konwertery jednostek
  • Udostępnianie: dołączanie dostępu do schowka i udostępnianie plików lub tekstu innym aplikacjom
  • Magazyn: interfejsy API do wybierania plików, pomocników systemu plików, preferencji i bezpiecznego magazynu

Jeśli aplikacja musi wykryć, czy dostęp do Internetu był dostępny na urządzeniu, może użyć interfejsu Connectivity API w Microsoft.Maui.Networkingprogramie :

var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
    // Connection to internet is available
}

Uzyskiwanie dostępu do interfejsów API platformy

Specyficzne dla platformy .NET MAUI umożliwiają korzystanie z określonych funkcji, które są dostępne tylko na określonej platformie. Aby uzyskać więcej informacji, zapoznaj się z tematami specyficznymi dla platformy systemu Android, specyficznymi dla platformy iOS i specyficznymi dla platformy systemu Windows.

W sytuacjach, w których program .NET MAUI nie udostępnia żadnych interfejsów API na potrzeby uzyskiwania dostępu do określonych interfejsów API platformy, możesz napisać własny kod, aby uzyskać dostęp do wymaganych interfejsów API platformy. Aby uzyskać więcej informacji, zobacz Wywoływanie kodu platformy.

Kod platformy można wywołać z kodu międzyplatformowego przy użyciu kompilacji warunkowej w celu użycia różnych platform.

W poniższym przykładzie pokazano DeviceOrientation wyliczenie, które służy do określania orientacji urządzenia:

namespace InvokePlatformCodeDemos.Services
{
    public enum DeviceOrientation
    {
        Undefined,
        Landscape,
        Portrait
    }
}

Pobieranie orientacji urządzenia wymaga pisania kodu platformy. Można to zrobić, pisząc metodę, która używa kompilacji warunkowej do określania celu na różnych platformach:

#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
        }
    }
}

Projekt aplikacji .NET MAUI zawiera folder Platformy z każdym folderem podrzędnym reprezentującym platformę docelową programu .NET MAUI. Każdy folder platformy docelowej zawiera kod specyficzny dla platformy, który uruchamia aplikację na tej platformie, a także inny dodany kod platformy. W czasie kompilacji system kompilacji zawiera tylko kod z każdego folderu podczas kompilowania dla tej konkretnej platformy. Na przykład podczas kompilowania dla systemu Android pliki w folderze Platformy>dla systemu Android są wbudowane w pakiet aplikacji, ale pliki w innych folderach Platformy nie są. To podejście używa funkcji o nazwie multitargeting w celu kierowania wielu platform z jednego projektu. Można połączyć wielodostępność z klasami częściowymi i metodami częściowymi, aby wywoływać funkcje platformy z kodu międzyplatformowego.

W następnym ćwiczeniu użyjemy kombinacji interfejsów API platformy .NET i interfejsów API .NET MAUI, aby zapisać i załadować listę zadań do wykonania.