다음을 통해 공유


Android용 .NET 및 iOS 앱용 .NET의 코드 마이그레이션 Xamarin.Essentials

Xamarin.Essentials 는 거의 모든 Xamarin 앱에 대한 기본 라이브러리이며 해당 기능은 이제 .NET 다중 플랫폼 앱 UI(.NET MAUI)의 일부입니다.

다음 단계에서는 Android용 .NET 또는 iOS용 .NET 앱에서 '이전의 Xamarin.Essentials네이티브 디바이스 기능'을 사용하는 .NET MAUI프로세스를 간략하게 설명합니다.

  1. Xamarin.Essentials Android용 .NET 또는 iOS용 .NET 앱에서 NuGet 패키지를 제거합니다.
  2. 프로젝트 파일에서 $(UseMauiEssentials) 빌드 속성을 true 설정합니다. 자세한 내용은 프로젝트 파일 수정을 참조하세요.
  3. 메서드를 호출 Platform.Init 하여 "essentials" 기능을 초기화합니다. 자세한 내용은 플랫폼 초기화를 참조하세요.
  4. 필요한 경우 추가 설정을 수행합니다. 자세한 내용은 추가 설정 수행을 참조 하세요.
  5. 필요한 기능에 using 지시문을 추가합니다. 자세한 내용은 using 지시문 추가를 참조 하세요.

Important

이미 해당 기능이 포함되어 있으므로 .NET MAUI 네임스페이스에 대한 참조를 제거하는 것 외에는 Xamarin.Essentials 앱에서 Xamarin.Essentials사용할 Xamarin.Essentials.NET MAUI 작업이 필요하지 않습니다.

프로젝트 파일 수정

Android용 .NET 또는 iOS용 .NET 앱에서 네이티브 디바이스 기능을 사용.NET MAUI하려면 프로젝트 파일을 수정하고 빌드 속성을 true.로 설정합니다$(UseMauiEssentials).

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0-android</TargetFramework>
    ...
    <UseMauiEssentials>true</UseMauiEssentials>
  </PropertyGroup>
</Project>

플랫폼 초기화

시작된 모든 Activity 항목에서 네임스페이스에 있는 메서드를 Microsoft.Maui.ApplicationModel 메서드에서 OnCreate 호출 Platform.Init 해야 합니다.

using Android.Content.PM;
using Android.Runtime;
using Microsoft.Maui.ApplicationModel;

namespace MyAndroidApp;

[Activity(Label = "@string/app_name", MainLauncher = true)]
public class MainActivity : Activity
{
    protected override async void OnCreate(Bundle? savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Platform.Init(this, savedInstanceState);
        // ...
    }
}

메서드에는 Platform.InitApplication 인수 또는 Activity 인수와 인수가 Bundle 필요합니다.

추가 설정 수행

정적 Platform 클래스에는 플랫폼별 도우미가 포함됩니다.

멤버 목적
ActivityStateChanged 활동의 상태가 변경될 때 발생하는 이벤트입니다.
AppContext 현재 앱 컨텍스트를 Context 나타내는 개체를 가져오는 속성입니다.
CurrentActivity 현재 활동을 나타내는 현재 Activity 개체를 가져오는 속성입니다.
Intent 앱 작업에서 ActionAppAction 사용되는 식별자인 문자열을 Intent 포함하는 정적 클래스입니다.
OnNewIntent 앱 동작을 Intent 호출할 때 활동의 재정의된 메서드에서 전달합니다.
OnResume Activity 앱 작업 호출의 일부로 다시 시작될 때 Activity 활동의 재정의된 메서드에서 전달합니다.
OnRequestPermissionsResult 내부 권한 요청을 처리하기 위해 작업의 재정의된 메서드에서 권한 요청 결과를 전달합니다.
WaitForActivityAsync Activity 만들거나 활성화될 때까지 기다립니다.

현재 Context 또는 Activity 실행 중인 앱에 액세스하려면 다음을 수행합니다.

var context = Platform.AppContext;

// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;

필요한 상황이 Activity 있지만 앱이 완전히 시작되지 않은 경우 메서드를 호출합니다 WaitForActivityAsync .

var activity = await Platform.WaitForActivityAsync();

런타임 권한 요청을 처리하려면 모든 Activity 메서드를 재정의 OnRequestPermissionsResult 하고 메서드를 Platform.OnRequestPermissionsResult 호출합니다.

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
    Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

현재 Activity항목을 가져오는 것 외에도 수명 주기 이벤트에 등록할 수도 있습니다.

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    Platform.Init(this, bundle);
    Platform.ActivityStateChanged += Platform_ActivityStateChanged;
}

protected override void OnDestroy()
{
    base.OnDestroy();
    Platform.ActivityStateChanged -= Platform_ActivityStateChanged;
}

void Platform_ActivityStateChanged(object sender, ActivityStateChangedEventArgs e) =>
    Toast.MakeText(this, e.State.ToString(), ToastLength.Short).Show();

활동 상태는 다음과 같습니다.

  • 만듦
  • 계속됨
  • 일시 중지됨
  • 제거됨
  • SaveInstanceState
  • Started
  • 중지됨

지시문을 사용하여 추가

iOS용 .NET 및 Android용 .NET에 대한 암시적 global using 지시문에는 네이티브 디바이스 기능에 대한 .NET MAUI네임스페이스가 포함되지 않습니다. 따라서 using 네임스페이 Xamarin.Essentials 스에 대한 지시문을 필요한 기능이 포함된 네임스페이스의 지시문으로 using 바꿔야 합니다.

네임스페이스 목적
Microsoft.Maui.ApplicationModel 앱 작업, 권한 및 버전 추적을 포함한 애플리케이션 모델 기능
Microsoft.Maui.ApplicationModel.Communication 연락처, 전자 메일 및 네트워킹을 포함한 통신 기능입니다.
Microsoft.Maui.Devices 배터리, 센서, 손전등 및 촉각 피드백을 포함한 디바이스 기능
Microsoft.Maui.Media 미디어 선택 및 텍스트 음성 변환을 비롯한 미디어 기능
Microsoft.Maui.ApplicationModel.DataTransfer 클립보드 및 파일 공유를 비롯한 공유 기능
Microsoft.Maui.Storage 파일 선택 및 보안 스토리지를 비롯한 스토리지 기능

각 네임스페이스의 기능에 대한 자세한 내용은 플랫폼 통합을 참조하세요.