Blazor 하이브리드의 플랫폼 기능 액세스
.NET을 사용하여 하이브리드 앱을 빌드하고 있습니다. 즉, 모든 .NET 클래스 라이브러리에 액세스할 수 있습니다. 이러한 API 외에도 .NET MAUI로 Blazor 하이브리드 앱을 빌드하면 여러 플랫폼에 배포할 수 있을 뿐만 아니라 각 플랫폼의 네이티브 API에 액세스할 수도 있습니다. 즉, iOS, Android, macOS 또는 Windows의 플랫폼 기능을 통합해야 하는 경우 C#에서 모두 수행할 수 있습니다. Blazor 구성 요소에서 직접 이러한 API에 액세스하거나 공유 .NET MAUI 클래스 라이브러리를 만들 수 있습니다.
플랫폼 통합
.NET MAUI가 지원하는 각 플랫폼은 C#에서 액세스할 수 있는 플랫폼 API와 고유한 운영 체제를 제공합니다. .NET MAUI는 센서에 대한 액세스, 앱이 실행되고 있는 디바이스에 대한 정보 액세스, 네트워크 연결 확인, 안전한 데이터 저장 및 브라우저 기반 인증 흐름 시작 등 이 플랫폼 기능의 대부분에 액세스할 수 있는 플랫폼 간 API를 제공합니다.
.NET MAUI는 이러한 플랫폼 간 API를 다양한 기능 영역으로 구분합니다.
- 애플리케이션 모델: 앱 작업, 애플리케이션 정보, 브라우저 열기, URI 열기, 맵 열기, 권한 처리 및 버전 추적을 포함한 앱 기능
- 통신: 연락처, 메일, 네트워킹, 전화 걸기, sms 메시징 및 웹 인증에 대한 액세스
- 디바이스 기능: 배터리, 디스플레이 정보, 장치 정보, 센서, 손전등, 지오코딩, 지리적 위치, 햅틱 피드백 및 진동에 대한 정보와 액세스
- 미디어: 미디어 선택기, 스크린샷, 텍스트 음성 변환, 단위 변환기 포함
- 공유: 클립보드에 대한 액세스 및 다른 애플리케이션에 대한 파일 또는 텍스트 공유 포함
- 스토리지: 파일, 파일 시스템 도우미, 기본 설정 및 보안 스토리지를 선택하기 위한 API
애플리케이션이 디바이스에서 인터넷 액세스를 사용할 수 있는지 감지해야 하는 경우 Microsoft.Maui.Networking
의 Connectivity
API를 사용할 수 있습니다.
var accessType = Connectivity.Current.NetworkAccess;
if (accessType is NetworkAccess.Internet)
{
// Connection to internet is available
}
액세스 플랫폼 API
.NET MAUI 플랫폼 관련 기능을 사용하면 특정 플랫폼에서만 사용할 수 있는 특정 기능을 사용할 수 있습니다. 자세한 내용은 Android 플랫폼 관련, iOS 플랫폼 관련 및 Windows 플랫폼 관련을 참조하세요.
.NET MAUI가 특정 플랫폼 API에 액세스하기 위한 API를 제공하지 않는 경우 필요한 플랫폼 API에 액세스하기 위해 사용자 고유의 코드를 작성할 수 있습니다. 자세한 내용은 플랫폼 코드 호출을 참조하세요.
조건부 컴파일을 사용하여 여러 플랫폼을 대상으로 플랫폼 간 코드에서 플랫폼 코드를 호출할 수 있습니다.
다음 예에서는 디바이스의 방향을 지정하는 데 사용하는 DeviceOrientation
열거형을 보여줍니다.
namespace InvokePlatformCodeDemos.Services
{
public enum DeviceOrientation
{
Undefined,
Landscape,
Portrait
}
}
디바이스 방향을 검색하려면 플랫폼 코드를 작성해야 합니다. 이 작업은 조건부 컴파일을 통해 다른 플랫폼을 대상으로 하는 메서드를 작성하여 수행할 수 있습니다.
#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
}
}
}
.NET MAUI 앱 프로젝트에는 .NET MAUI가 대상으로 지정할 수 있는 플랫폼을 나타내는 각 자식 폴더가 있는 플랫폼 폴더가 포함되어 있습니다. 각 대상 플랫폼 폴더에는 각 플랫폼에서 앱을 시작하는 플랫폼 관련 코드와 사용자가 추가하는 기타 플랫폼 코드가 포함됩니다. 빌드 시 빌드 시스템에는 특정 플랫폼을 빌드할 때 각 폴더의 코드만 포함됩니다. 예를 들어 Android용으로 빌드할 때 플랫폼>Android 폴더의 파일은 앱 패키지에 빌드되지만 다른 플랫폼 폴더의 파일은 빌드되지 않습니다. 이 방법은 멀티 타기팅이라는 기능을 사용하여 단일 프로젝트의 여러 플랫폼을 대상으로 합니다. 멀티 타기팅을 partial 클래스 및 부분 메서드와 결합하여 플랫폼 간 코드에서 플랫폼 기능을 호출할 수 있습니다.
다음 연습에서는 .NET API와 .NET MAUI API의 조합을 사용하여 할 일 목록을 저장하고 로드합니다.