Funkce platformy Access v hybridním prostředí Blazor
Vytváříme hybridní aplikace pomocí .NET, což znamená, že máme přístup ke všem knihovnám tříd .NET. Kromě těchto rozhraní API umožňuje vytváření hybridních aplikací Blazor pomocí rozhraní .NET MAUI nejen nasazení na více platforem, ale také umožňuje přístup k nativním rozhraním API každé platformy. To znamená, že pokud potřebujete integrovat funkce platformy pro iOS, Android, macOS nebo Windows, můžete to všechno udělat v jazyce C#. K těmto rozhraním API můžete přistupovat přímo z komponent Blazor nebo můžete vytvářet sdílené knihovny tříd .NET MAUI.
Integrace platformy
Každá platforma, kterou .NET MAUI podporuje, nabízí jedinečné rozhraní API operačního systému a platformy, ke kterým máte přístup z jazyka C#. Rozhraní .NET MAUI poskytuje rozhraní API pro různé platformy pro přístup k mnoha funkcím této platformy, včetně přístupu ke senzorům, přístupu k informacím o zařízení, na kterém je aplikace spuštěná, kontrole síťového připojení, bezpečné ukládání dat a spouštění toků ověřování na základě prohlížeče.
.NET MAUI odděluje tato rozhraní API pro různé platformy do různých oblastí funkčnosti:
- Aplikační model: Funkce aplikace, včetně akcí aplikací, informací o aplikaci, otevření prohlížeče, otevírání identifikátorů URI, otevírání map, zpracování oprávnění a sledování verzí
- Komunikace: Přístup k kontaktům, e-mailu, sítím, telefonnímu vytáčení, sms zpráv a ověřování webu
- Funkce zařízení: Informace a přístup k baterii, informace o displeji, informace o zařízení, senzory, baterka, geokódování, geolokace, haptická zpětná vazba a vibrace
- Multimédia: Včetně nástroje pro výběr médií, snímků obrazovky, převodu textu na řeč a převaděčů jednotek
- Sdílení: Zahrnutí přístupu ke schránce a sdílení souborů nebo textu do jiných aplikací
- Úložiště: Rozhraní API pro výběr souborů, pomocných rutin systému souborů, předvoleb a zabezpečeného úložiště
Pokud aplikace potřebovala zjistit, jestli je na zařízení dostupný přístup k internetu, mohla by použít Connectivity
rozhraní API v Microsoft.Maui.Networking
:
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
Přístup k rozhraním API platformy
Specifické funkce platformy .NET MAUI umožňují využívat konkrétní funkce, které jsou dostupné jenom na konkrétní platformě. Další informace najdete v tématu specifické pro platformy Android, specifické platformy pro iOS a specifické pro platformy Windows.
V situacích, kdy rozhraní .NET MAUI neposkytuje žádná rozhraní API pro přístup ke konkrétním rozhraním API platformy, můžete napsat vlastní kód pro přístup k požadovaným rozhraním API platformy. Další informace najdete v tématu Volání kódu platformy.
Kód platformy můžete vyvolat z kódu pro různé platformy pomocí podmíněné kompilace pro cílení na různé platformy.
Následující příklad ukazuje DeviceOrientation
výčet, který použijete k určení orientace zařízení:
namespace InvokePlatformCodeDemos.Services
{
public enum DeviceOrientation
{
Undefined,
Landscape,
Portrait
}
}
Načtení orientace zařízení vyžaduje psaní kódu platformy. Toho můžete dosáhnout napsáním metody, která používá podmíněnou kompilaci pro cílení na různé platformy:
#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 aplikace .NET MAUI obsahuje složku Platformy , přičemž každá podřízená složka představuje platformu, na kterou může .NET MAUI cílit. Každá složka cílové platformy obsahuje kód specifický pro platformu, který spustí aplikaci na této platformě a jakýkoli jiný kód platformy, který přidáte. V době sestavení systém sestavení obsahuje kód pouze z každé složky při sestavování pro danou konkrétní platformu. Například při sestavování pro Android jsou soubory ve složce Platformy>s Androidem integrované do balíčku aplikace, ale soubory v ostatních složkách Platformy nejsou. Tento přístup používá funkci označovanou jako multitargeting k cílení na více platforem z jednoho projektu. Multitargeting můžete kombinovat s částečnými třídami a částečnými metodami pro vyvolání funkcí platformy z kódu pro různé platformy.
V dalším cvičení použijeme kombinaci rozhraní .NET API a rozhraní .NET MAUI API k uložení a načtení seznamu úkolů.