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 Híbridos Blazor com o MAUI do .NET 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 do iOS, Android, macOS ou Windows, poderá fazer tudo isso 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 MAUI do .NET 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, verificando a conectividade de rede, armazenando dados com segurança e iniciando 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 de aplicativo, informações do aplicativo, abertura do navegador, abertura de URIs, abertura de mapas, manipulação de permissões e acompanhamento de versão
- Comunicação: Acesso a contatos, email, rede, discagem telefônica, mensagens sms e autenticação da 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, texto para fala e conversores de 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 Connectivity API em Microsoft.Maui.Networking:
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
Acessar APIs da plataforma
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, consulte específicos da plataforma Android, específicos da plataforma iOS e específicos da plataforma do Windows.
Em situações em que o MAUI do .NET não fornece NENHUMA APIs 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, faça referência ao 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 DeviceOrientation enumeração, 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, que você pode realizar 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 Platforms, com cada subpasta representando uma plataforma que .NET MAUI pode direcionar. 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. Durante o processo de construção, o sistema de construção inclui apenas o código de cada pasta ao compilar para aquela plataforma específica. Por exemplo, quando você cria para Android, os arquivos na pasta Plataformas> são integrados ao pacote do aplicativo, mas os arquivos nas outras pastas Plataformas não são. Essa abordagem usa um recurso chamado multitargeting para direcionar 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 MAUI do .NET para salvar e carregar nossa lista de tarefas pendentes.