앱 SDK Xamarin 바인딩 Microsoft Intune

참고

Android 플랫폼용 현재 Xamarin 바인딩은 Android 9.0 이하 및 Xamarin Forms 4.4 이하를 대상으로 하는 앱만 지원합니다. Microsoft는 .NET MAUI에서 Intune 지원을 제공하여 Android에서 최신 버전에 대한 지원을 개선하기 위해 노력하고 있습니다. 이제 .NET MAUI 지원에 대한 베타 릴리스를 사용할 수 있습니다. 자세한 내용은 .NET MAUI용 앱 SDK Intune - Android를 참조하세요. iOS에서 .NET MAUI 지원을 보려면 .NET MAUI용 앱 SDK Intune - iOS를 참조하세요. Xamarin 지원 정책 및 Xamarin에서 .NET MAUI로 앱 마이그레이션 및 Xamarin 지원에 대한 자세한 내용은 Xamarin.Forms Forms 앱 마이그레이션을 참조하세요.

먼저 지원되는 각 플랫폼에서 통합을 준비하는 방법을 설명하는 Intune 앱 SDK 시작 문서를 읽을 수 있습니다.

개요

Intune 앱 SDK Xamarin 바인딩을 사용하면 xamarin으로 빌드된 iOS 및 Android 앱에서 Intune 앱 보호 정책을 사용할 수 있습니다. 이 바인딩을 통해 개발자는 Xamarin 기반 앱에 Intune 앱 보호 기능을 쉽게 빌드할 수 있습니다.

Microsoft Intune 앱 SDK Xamarin 바인딩을 사용하면 Intune 앱 보호 정책(APP 또는 MAM 정책이라고도 함)을 Xamarin으로 개발된 앱에 통합할 수 있습니다. MAM 지원 애플리케이션은 Intune 앱 SDK와 통합된 애플리케이션입니다. IT 관리자는 Intune 앱을 적극적으로 관리할 때 모바일 앱에 앱 보호 정책을 배포할 수 있습니다.

지원되는 항목은 무엇인가요?

개발자 컴퓨터

  • Windows(Visual Studio 버전 15.7 이상)
  • macOS

모바일 앱 플랫폼

  • Android
  • iOS

모바일 애플리케이션 관리 시나리오 Intune

  • MAM Intune
  • MDM 등록 디바이스 Intune
  • 타사 EMM 등록 디바이스

Intune 앱 SDK Xamarin Bindings로 빌드된 Xamarin 앱은 이제 Intune MDM(모바일 디바이스 관리) 등록된 디바이스와 등록되지 않은 디바이스 모두에서 Intune 앱 보호 정책을 받을 수 있습니다.

필수 구성 요소

사용 조건을 검토합니다. 레코드에 대한 사용 조건의 복사본을 인쇄하고 유지합니다. Intune 앱 SDK Xamarin Bindings를 다운로드하고 사용하여 이러한 사용 조건에 동의합니다. 동의하지 않는 경우 소프트웨어를 사용하지 마세요.

Intune SDK는 인증 및 조건부 시작 시나리오에 MSAL(Microsoft 인증 라이브러리)을 사용합니다. 이 시나리오에서는 앱을 Microsoft Entra ID 구성해야 합니다.

애플리케이션이 이미 MSAL을 사용하도록 구성되어 있고 Microsoft Entra ID 인증하는 데 사용되는 고유한 사용자 지정 클라이언트 ID가 있는 경우 Intune MAM(모바일 애플리케이션 관리) 서비스에 Xamarin 앱 권한을 부여하는 단계가 수행되는지 확인합니다. Intune SDK 시작 가이드의 "Intune Mobile App Management 서비스에 대한 앱 액세스 권한 부여" 섹션의 지침을 사용합니다.

보안 고려 사항

잠재적인 스푸핑, 정보 공개 및 권한 상승 공격을 방지하려면 다음을 수행합니다.

  • 보안 워크 스테이션에서 Xamarin 앱 개발이 수행되는지 확인합니다.
  • 바인딩이 유효한 Microsoft 원본인지 확인합니다.
  • 프로젝트가 서명되고 수정되지 않은 NuGet 패키지를 신뢰하도록 NuGet 구성을 구성합니다. 자세한 내용은 서명된 패키지 설치 를 참조하세요.
  • Xamarin 앱이 포함된 출력 디렉터리를 보호합니다. 출력에 사용자 수준 디렉터리를 사용하는 것이 좋습니다.

iOS 모바일 앱에서 Intune 앱 보호 정책 사용

중요

Intune 정기적으로 Intune 앱 SDK에 대한 업데이트를 릴리스합니다. 업데이트를 위해 Intune 앱 SDK Xamarin 바인딩을 정기적으로 검사 소프트웨어 개발 릴리스 주기에 통합하여 앱이 최신 앱 보호 정책 설정을 지원하도록 합니다.

  1. Microsoft.Intune 추가합니다. 맘. Xamarin.iOS NuGet 패키지를 Xamarin.iOS 프로젝트로 이동합니다.

  2. Intune 앱 SDK를 iOS 모바일 앱에 통합하는 데 필요한 일반적인 단계를 따릅니다. iOS용 Intune 앱 SDK 개발자 가이드에서 통합 지침의 3단계로 시작할 수 있습니다. 이 도구가 Microsoft에 포함되어 있으므로 IntuneMAMConfigurator를 실행하는 해당 섹션의 마지막 단계를 건너뛸 수 있습니다. Intune. 맘. Xamarin.iOS 패키지 및 는 빌드 시 자동으로 실행됩니다. 중요: 앱에 키체인 공유를 사용하도록 설정하는 것은 Visual Studio에서 Xcode와 약간 다릅니다. 앱의 권한 plist를 열고 "키 집합 사용" 옵션이 활성화되어 있고 해당 섹션에 적절한 키체인 공유 그룹이 추가되었는지 확인합니다. 그런 다음, 모든 적절한 구성/플랫폼 조합에 대한 프로젝트의 "iOS 번들 서명" 옵션의 "사용자 지정 권한" 필드에 권한 plist가 지정되어 있는지 확인합니다.

  3. 바인딩이 추가되고 앱이 제대로 구성되면 앱에서 Intune SDK의 API 사용을 시작할 수 있습니다. 이렇게 하려면 다음 네임스페이스를 포함해야 합니다.

    using Microsoft.Intune.MAM;
    
  4. 앱 보호 정책 수신을 시작하려면 앱이 Intune MAM 서비스에 등록해야 합니다. 앱이 MSAL(Microsoft 인증 라이브러리)을 사용하여 사용자를 인증하지 않고 Intune SDK가 인증을 처리하도록 하려면 앱에서 사용자의 UPN을 IntuneMAMEnrollmentManager의 LoginAndEnrollAccount 메서드에 제공해야 합니다.

     IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
    

    호출 시 사용자의 UPN을 알 수 없는 경우 앱이 null로 전달될 수 있습니다. 이 경우 사용자에게 전자 메일 주소와 암호를 모두 입력하라는 메시지가 표시됩니다.

    앱이 이미 MSAL을 사용하여 사용자를 인증하는 경우 앱과 Intune SDK 간에 SSO(Single Sign-On) 환경을 구성할 수 있습니다. 먼저 Intune SDK에서 사용하는 기본 Microsoft Entra 설정을 앱의 설정으로 재정의해야 합니다. iOS용 Intune 앱 SDK 개발자 가이드에 설명된 대로 앱의 Info.plist에서 IntuneMAMSettings 사전을 통해 수행하거나 IntuneMAMSettings 클래스의 Microsoft Entra ID 재정의 속성을 통해 코드에서 수행할 수 있습니다. Info.plist 접근 방식은 MSAL 설정이 정적인 애플리케이션에 권장되는 반면, 런타임에 해당 값을 결정하는 애플리케이션에는 재정의 속성이 권장됩니다. 모든 SSO 설정이 구성되면 앱은 성공적으로 인증된 후 사용자의 UPN을 IntuneMAMEnrollmentManager의 RegisterAndEnrollAccount 메서드에 제공해야 합니다.

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    앱은 IntuneMAMEnrollmentDelegate의 하위 클래스에서 EnrollmentRequestWithStatus 메서드를 구현하고 IntuneMAMEnrollmentManager의 Delegate 속성을 해당 클래스의 instance 설정하여 등록 시도의 결과를 확인할 수 있습니다.

    성공적으로 등록되면 앱은 다음 속성을 쿼리하여 등록된 계정의 UPN(이전에 알 수 없는 경우)을 확인할 수 있습니다.

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

샘플 애플리케이션

Xamarin.iOS 앱의 MAM 기능을 강조 표시하는 샘플 애플리케이션은 GitHub에서 사용할 수 있습니다.

참고

iOS/iPadOS에 대한 재매퍼는 없습니다. Xamarin에 통합. Forms 앱은 일반 Xamarin.iOS 프로젝트와 동일해야 합니다.

Android 모바일 앱에서 Intune 앱 보호 정책 사용

  1. Microsoft.Intune 추가합니다. 맘. Xamarin.Android 프로젝트에 대한 Xamarin.Android NuGet 패키지입니다.
    1. Xamarin의 경우. 앱을 Forms Microsoft.Intune 추가합니다. 맘. Remapper.Tasks NuGet 패키지를 Xamarin.Android 프로젝트에도 제공합니다.
  2. 자세한 내용은 이 문서를 참조하는 동안 Intune 앱 SDK를 Android 모바일 앱에 통합하는 데 필요한 일반적인 단계를 따릅니다.

Xamarin.Android 통합

Intune 앱 SDK 통합에 대한 전체 개요는 android용 Microsoft Intune 앱 SDK 개발자 가이드에서 찾을 수 있습니다. 가이드를 읽고 Intune 앱 SDK를 Xamarin 앱과 통합할 때 다음 섹션에서는 Java에서 개발된 네이티브 Android 앱의 구현과 C#에서 개발한 Xamarin 앱 간의 차이점을 강조하기 위한 것입니다. 이러한 섹션은 보완 섹션으로 취급되어야 하며 가이드 전체를 읽는 대신 사용할 수 없습니다.

다시 매핑

1.4428.1 릴리스 Microsoft.Intune.MAM.Remapper 부터 패키지를 빌드 도구 로 Xamarin.Android 애플리케이션에 추가하여 MAM 클래스, 메서드 및 시스템 서비스 교체를 수행할 수 있습니다. Remapper가 포함된 경우 이름이 바뀐 메서드 및 MAM 애플리케이션 섹션의 MAM 동등한 대체 부분은 애플리케이션이 빌드될 때 자동으로 수행됩니다.

Remapper에서 MAM 통합에서 클래스를 제외하려면 프로젝트 .csproj 파일에 다음 속성을 추가할 수 있습니다.

  <PropertyGroup>
    <ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
  </PropertyGroup>

참고

Remapper는 현재 Xamarin.Android 앱에서 디버깅을 방지합니다. 애플리케이션을 디버그하려면 수동 통합을 사용하는 것이 좋습니다.

이름이 바뀐 메서드

대부분의 경우 Android 클래스에서 사용할 수 있는 메서드가 MAM 대체 클래스에서 최종으로 표시되었습니다. 이 경우 MAM 대체 클래스는 대신 재정의해야 하는 유사한 이름의 메서드(접미사가 MAM붙는)를 제공합니다. 예를 들어 에서 MAMActivity파생되는 경우 를 재정의하고 호출 base.OnCreate()Activity 하는 OnCreate() 대신 를 재정 OnMAMCreate() 의하고 를 호출base.OnMAMCreate()해야 합니다.

MAM 애플리케이션

앱에서 클래스를 Android.App.Application 정의해야 합니다. MAM을 수동으로 통합하는 경우 에서 MAMApplication상속해야 합니다. 서브클래스가 특성으로 [Application] 올바르게 데코레이트되고 생성자를 재정의 (IntPtr, JniHandleOwnership) 하는지 확인합니다.

    [Application]
    class TaskrApp : MAMApplication
    {
    public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
        : base(handle, transfer) { }

참고

MAM Xamarin 바인딩과 관련된 문제로 인해 디버그 모드로 배포할 때 애플리케이션이 충돌할 수 있습니다. 해결 방법으로 특성을 클래스에 Debuggable=falseApplication 추가해야 하며 android:debuggable="true" 수동으로 설정된 경우 매니페스트에서 플래그를 제거해야 합니다.

앱 참여가 필요한 기능 사용

예: 앱에 PIN이 필요한지 확인

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

예: 기본 Intune 사용자 확인

IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;

예: 디바이스 또는 클라우드 스토리지에 저장이 허용되는지 확인

MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);

SDK에서 알림 등록

앱을 만들고 MAMNotificationReceiver 에 등록하여 SDK에서 알림을 등록 MAMNotificationReceiverRegistry해야 합니다. 이 작업은 아래 예제와 같이 수신자와 에서 App.OnMAMCreate원하는 알림 유형을 제공하여 수행됩니다.

public override void OnMAMCreate()
{
    // Register the notification receivers
    IMAMNotificationReceiverRegistry registry = MAMComponents.Get<IMAMNotificationReceiverRegistry>();
    foreach (MAMNotificationType notification in MAMNotificationType.Values())
    {
        registry.RegisterReceiver(new ToastNotificationReceiver(this), notification);
    }
    ...

MAM 등록 관리자

IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();

Xamarin. Forms 통합

애플리케이션의 경우 Xamarin.Forms 패키지는 Microsoft.Intune.MAM.Remapper 일반적으로 사용되는 Xamarin.Forms 클래스의 클래스 계층 구조에 클래스를 삽입하여 MAM MAM 클래스 교체를 자동으로 수행합니다.

참고

Xamarin입니다. Forms 통합은 위에서 자세히 설명한 Xamarin.Android 통합 외에도 수행해야 합니다. 재매퍼는 Xamarin에 대해 다르게 동작합니다. 앱을 Forms 수동 MAM 교체를 계속 수행해야 합니다.

프로젝트에 Remapper가 추가되면 MAM 동등한 대체를 수행해야 합니다. 예를 들어 및 FormsAppCompatActivityFormsApplicationActivity 는 및 에 대한 재정 OnCreate 의를 제공된 애플리케이션에서 계속 사용할 수 있으며 OnResume 각각 MAM 등가물 OnMAMCreateOnMAMResume 로 바뀝니다.

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnMAMCreate(Bundle savedInstanceState)
        {
            base.OnMAMCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }

교체를 수행하지 않으면 교체를 수행할 때까지 다음과 같은 컴파일 오류가 발생할 수 있습니다.

  • 컴파일러 오류 CS0239. 이 오류는 일반적으로 이 형식 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed으로 표시됩니다. 이는 Remapper가 Xamarin 클래스의 상속을 수정할 때 특정 함수가 만들어 sealed 지고 대신 재정의하기 위해 새 MAM 변형이 추가되기 때문입니다.
  • 컴파일러 오류 CS0507: 이 오류는 일반적으로 이 형식 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member ...으로 표시됩니다. Remapper가 일부 Xamarin 클래스의 상속을 변경하면 특정 멤버 함수가 로 public변경됩니다. 이러한 함수를 재정의하는 경우 해당 재정의에 대한 액세스 한정자도 변경해야 합니다 public .

참고

Remapper는 Visual Studio에서 IntelliSense 자동 완성에 사용하는 종속성을 다시 작성합니다. 따라서 변경 내용을 올바르게 인식하려면 IntelliSense에 대한 Remapper가 추가될 때 프로젝트를 다시 로드하고 다시 빌드해야 할 수 있습니다.

문제 해결

  • 시작할 때 애플리케이션에서 빈 흰색 화면이 발생하면 탐색 호출이 기본 스레드에서 실행되도록 강제해야 할 수 있습니다.
  • Intune SDK Xamarin Bindings는 MvvmCross와 Intune MAM 클래스 간의 충돌로 인해 MvvmCross와 같은 플랫폼 간 프레임워크를 사용하는 앱을 지원하지 않습니다. 일부 고객은 앱을 일반 Xamarin으로 이동한 후 통합에 성공했을 수 있습니다. Forms MvvmCross를 사용하는 앱 개발자를 위한 명시적 지침이나 플러그 인은 제공하지 않습니다.

회사 포털 앱

Intune SDK Xamarin 바인딩은 앱 보호 정책을 사용하도록 설정하기 위해 디바이스에 회사 포털 Android 앱이 있는지를 사용합니다. 회사 포털 Intune 서비스에서 앱 보호 정책을 검색합니다. 앱이 초기화되면 정책 및 코드를 로드하여 회사 포털 해당 정책을 적용합니다. 사용자가 로그인할 필요가 없습니다.

참고

회사 포털 앱이 Android 디바이스에 없는 경우 Intune 관리형 앱은 Intune 앱 보호 정책을 지원하지 않는 일반 앱과 동일하게 작동합니다.

디바이스 등록이 없는 앱 보호의 경우 사용자는 회사 포털 앱을 사용하여 디바이스를 등록할 필요가 없습니다.

샘플 애플리케이션

Xamarin.Android 및 Xamarin의 MAM 기능을 강조 표시하는 샘플 애플리케이션입니다. Forms 앱은 GitHub에서 사용할 수 있습니다.

지원

organization 기존 Intune 고객인 경우 Microsoft 지원 담당자와 협력하여 지원 티켓을 열고 GitHub 문제 페이지에서 문제를 만드세요. 우리는 가능한 한 빨리 도울 것입니다.