Acessar recursos da plataforma no Blazor Hybrid
Estamos criando aplicativos híbridos com o .NET, o que significa que temos acesso a todas as bibliotecas de classes do .NET. Além dessas APIs, a criação de aplicativos Blazor Hybrid com o .NET MAUI não só permite que você implante em várias plataformas, como também permite o acesso às APIs nativas de cada plataforma. Isso significa que, se você precisar integrar recursos de plataforma de iOS, Android, macOS ou Windows, poderá fazer tudo em C#. Você pode acessar essas APIs diretamente de seus componentes Blazor ou criar bibliotecas de classes .NET MAUI compartilhadas.
Integração de plataforma
Cada plataforma compatível com o .NET MAUI oferece APIs de plataforma e sistema operacional exclusivos que você pode acessar do C#. O .NET MAUI fornece APIs multiplataforma para acessar grande parte dessa funcionalidade de plataforma, que inclui acesso a sensores, acesso a informações sobre o dispositivo no qual um aplicativo está sendo executado, verificar a conectividade de rede, armazenar dados com segurança e iniciar fluxos de autenticação baseados em navegador.
O .NET MAUI separa essas APIs multiplataforma em diferentes áreas de funcionalidade:
- Modelo de aplicativo: Funcionalidade do aplicativo, incluindo ações do aplicativo, informações do aplicativo, abrir o navegador, abrir URIs, abrir mapas, manipular permissões e acompanhamento de versão
- Comunicação: Acesso a contatos, email, rede, discagem telefônica, mensagens SMS e autenticação na Web
- Recursos do dispositivo: Informações e acesso à bateria, informações de exibição, informações do dispositivo, sensores, lanterna, geocodificação, localização geográfica, comentários hápticos e vibração
- Mídia: Incluindo seletor de mídia, capturas de tela, conversores de texto em fala e unidade
- Compartilhamento: Incluindo acesso à área de transferência e compartilhamento de arquivos ou texto para outros aplicativos
- Armazenamento: APIs para escolher arquivos, auxiliares do sistema de arquivos, preferências e armazenamento seguro
Se um aplicativo precisasse detectar se o acesso à Internet estava disponível no dispositivo, ele poderia usar a API Connectivity
em Microsoft.Maui.Networking
:
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
APIs da plataforma de acesso
As especificações da plataforma .NET MAUI permitem que você consuma funcionalidades específicas que só estão disponíveis em uma plataforma específica. Para obter mais informações, faça referência a Itens específicos da plataforma Android, Itens específicos da plataforma iOS e Itens específicos da plataforma do Windows.
Em situações em que o .NET MAUI não fornece nenhuma API para acessar APIs de plataforma específicas, você pode escrever seu próprio código para acessar as APIs de plataforma necessárias. Para obter mais informações, confira código da plataforma Invoke.
Você pode invocar o código da plataforma do código multiplataforma usando a compilação condicional para direcionar plataformas diferentes.
O exemplo a seguir mostra a enumeração DeviceOrientation
, que você usa para especificar a orientação do dispositivo:
namespace InvokePlatformCodeDemos.Services
{
public enum DeviceOrientation
{
Undefined,
Landscape,
Portrait
}
}
A recuperação da orientação do dispositivo requer a gravação do código da plataforma. Você pode fazer isso escrevendo um método que usa a compilação condicional para direcionar diferentes plataformas:
#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
}
}
}
Um projeto de aplicativo .NET MAUI contém uma pasta Plataformas, com cada pasta filha representando uma plataforma que o .NET MAUI pode ter como destino. Cada pasta de plataforma de destino contém código específico da plataforma que inicia o aplicativo nessa plataforma, além de qualquer outro código de plataforma que você adicionar. No momento da compilação, o sistema de compilação inclui apenas o código de cada pasta ao compilar para essa plataforma específica. Por exemplo, quando você cria para Android, os arquivos na pasta Plataformas>Android são integrados ao pacote do aplicativo, mas os arquivos nas outras pastas plataformas não são. Essa abordagem usa um recurso chamado multi-direcionamento para se direcionar a várias plataformas de um único projeto. Você pode combinar o multi-direcionamento com classes parciais e métodos parciais para invocar funcionalidade de plataforma do código multiplataforma.
No próximo exercício, usaremos uma combinação de APIs .NET e APIs .NET MAUI para salvar e carregar nossa lista de tarefas pendentes.