Android용 Intune 앱 SDK - MAM 통합 필수 요소

Android용 Microsoft Intune 앱 SDK를 사용하면 Intune 앱 보호 정책(APP 또는 MAM 정책이라고도 함)을 네이티브 Java/Kotlin Android 앱에 통합할 수 있습니다. Intune 관리형 애플리케이션은 Intune 앱 SDK와 통합된 애플리케이션입니다. Intune 관리자는 Intune이 앱을 적극적으로 관리할 때 Intune 관리 앱에 앱 보호 정책을 쉽게 배포할 수 있습니다.

참고

이 가이드는 여러 가지 개별 단계로 나뉩니다. 먼저 1단계: 통합 계획을 검토합니다.

4단계: MAM Integration Essentials

스테이지 Goals

  • MAM Strict 모드를 사용하도록 설정합니다.
  • SDK에서 중요한 알림을 등록합니다.
  • 인증 콜백을 구현하고 등록하여 MSAL에서 SDK로 Microsoft Entra 토큰을 제공합니다.
  • MSAL을 사용하여 인증한 후 MAM 관리를 위한 새 계정을 등록합니다.
  • 로그아웃 시 계정 등록을 취소하여 회사 데이터를 제거합니다.
  • (권장) 앱에 MAM 로깅을 통합합니다.
  • (권장) SDK 진단 대화 상자를 사용하는 방법을 알아봅니다.

배경

이제 Intune 앱 SDK를 다운로드하고, 빌드에 통합하고, 클래스 및 메서드 교체를 성공적으로 수행했으므로 이제 MAM 보호 계정에 대한 앱 보호 정책 설정 적용을 시작하기 위해 필수 코드를 변경해야 합니다.

이 단계에서는 SDK의 로깅에 연결하고, 진단 대화 상자를 호출하고, MAM Strict Mode를 사용하여 가능한 통합 버그를 식별하고, SDK에서 알림을 등록하고, 가장 중요한 것은 Intune MAM에 대한 계정을 등록하여 정책 수신을 시작하는 방법을 안내합니다.

MAM Strict 모드

MAM Strict Mode는 애플리케이션의 Intune 앱 SDK 통합에서 잠재적인 버그를 식별할 수 있습니다. 이러한 통합 버그로 인해 앱 보호 정책을 제대로 적용하지 못하고 회사 데이터가 보호되지 않을 수 있습니다. 따라서 MAM Strict Mode를 사용하는 것이 필요합니다.

MAM 엄격한 모드는 애플리케이션의 MAM API 및 MAM 제한 플랫폼 API 사용 시 변칙을 찾습니다. Android의 StrictMode 이후에 느슨하게 패턴화된 MAM Strict Mode는 실패할 때 런타임 오류를 발생시키는 미리 정의된 검사 집합을 실행합니다. MAM Strict Mode는 프로덕션 빌드에서 사용하도록 설정되지 않습니다. 대신 앱의 내부 개발, 디버그 및/또는 dogfood 빌드에 사용합니다.

MAM Strict 모드를 사용하도록 설정하려면 를 호출합니다.

MAMStrictMode.enable();

애플리케이션 초기화 초기화(예: Application.onCreate).

MAM Strict Mode 검사 실패하면 앱에서 해결할 수 있는 실제 문제인지 아니면 가양성인지 확인합니다. 가양성이라고 생각하거나 확실하지 않은 경우 Intune MAM 팀에 알려주세요. 이를 통해 가양성 결정에 동의하고 향후 릴리스에 대한 검색을 개선하기 위해 노력할 수 있습니다. 가양성 표시를 표시하지 않으려면 아래 지침에 따라 실패 검사 사용하지 않도록 설정합니다.

위반 처리

검사 실패하면 MAMStrictViolationHandler를 실행합니다. 기본 처리기는 앱을 충돌시킬 것으로 예상되는 을 throw Error합니다. 이는 실패를 가능한 한 시끄럽게 만들기 위한 것이며 프로덕션 빌드에서 엄격한 모드를 사용하도록 설정해서는 안 된다는 의도에 부합합니다.

앱이 위반을 다르게 처리하려는 경우 다음을 호출하여 자체 처리기를 제공할 수 있습니다.

MAMStrictMode.global().setHandler(handler);

여기서 handler 은 를 구현합니다 MAMStrictViolationHandler.

검사 표시 안 함

앱이 잘못된 작업을 수행하지 않는 상황에서 검사 실패하는 경우 위에서 설명한 대로 보고합니다. 그 동안에는 적어도 업데이트된 SDK를 기다리는 동안 가양성이 발생하는 검사 사용하지 않도록 설정해야 할 수 있습니다. 실패한 검사 기본 처리기에 의해 발생한 오류에 표시되거나 설정된 경우 사용자 지정 처리기에 전달됩니다.

전역적으로 억제를 수행할 수 있지만 특정 호출 사이트에서 스레드당 일시적으로 사용하지 않도록 설정하는 것이 좋습니다. 다음 예제에서는 MAMStrictCheck.IDENTITY_NO_SUCH_FILE 사용하지 않도록 설정하는 다양한 방법을 보여 줍니다(존재하지 않는 파일을 보호하려는 경우 발생).

Per-Thread 임시 표시 안 함

이는 기본 설정 억제 메커니즘입니다.

try (StrictScopedDisable disable = MAMStrictMode.thread().disableScoped(MAMStrictCheck.IDENTITY_NO_SUCH_FILE)) {
    // Perform the operation which raised a violation here
}
// The check is no longer disabled once the block exits

Per-Thread 영구 표시 안 함

MAMStrictMode.thread().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);

전역(프로세스 수준) 표시 안 함

MAMStrictMode.global().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);

SDK에서 알림 등록

Intune 앱 SDK는 애플리케이션에 시간에 민감한 관리 작업을 알리기 위해 다양한 유형의 알림을 발행합니다. 애플리케이션은 이러한 알림을 받을 때 등록하고 조치를 취할 수 있습니다.

예를 들어 IT 관리자가 디바이스에 대한 선택적 초기화 명령을 발급할 때마다 Intune 서비스는 SDK에 알림을 보냅니다. 이 알림은 애플리케이션 WIPE_USER_DATA에 로 전달됩니다. 애플리케이션은 이 알림을 수신 대기하고 초기화되는 데이터를 제어할 수 있습니다. 또는 SDK의 기본 초기화 동작에 의존할 수 있습니다.

대부분의 알림은 선택 사항입니다. 애플리케이션에서 사용하는 SDK 기능에 따라 일부 알림이 필요할 수 있습니다. 알림을 등록하는 방법, SDK가 제공하는 알림 및 특정 알림 유형을 처리하는 방법에 대한 자세한 내용은 7단계: 앱 참여 기능의 SDK에서 알림 등록을 참조하세요.

앱 보호 정책 등록

관리자는 앱 보호 정책을 만들 때 이러한 정책을 organization 특정 계정으로 대상으로 지정합니다. 클라이언트에서 SDK는 해당 계정의 정책을 검색하고 설정을 적절하게 적용할 수 있도록 애플리케이션을 사용하는 계정을 알고 있어야 합니다. 앱은 SDK에 이 계정 정보를 제공할 책임이 있습니다. 이 프로세스를 등록이라고 합니다.

앱이 새 계정을 추가할 때마다 다른 계정이 이미 등록된 경우에도 SDK에 계정을 등록해야 합니다. 앱에서 여러 계정을 등록할 수 있습니다. 그러나 현재는 하나의 계정만 등록하거나 앱 보호 정책을 적용할 수 있습니다. Android에서 이 단일 관리형 계정 제한은 디바이스 전체입니다.

등록 및 등록

등록 은 앱이 SDK에 새 계정이 사용 중임을 알리는 프로세스입니다. SDK에는 앱에서 계정 등록 및 등록 취소를 위해 호출해야 하는 함수가 포함되어 있습니다.

등록 은 SDK가 등록된 계정을 Intune 서비스에 기록하여 계정의 정책을 적용할 수 있도록 하는 프로세스입니다. 앱은 등록을 위해 함수를 호출할 필요가 없습니다. SDK는 계정이 등록된 후 등록을 완전히 처리합니다.

한 계정이 애플리케이션에 이미 등록된 경우 다른 계정을 등록할 때 해당 계정이 App Protection 정책을 대상으로 하는 경우에도 해당 두 번째 계정이 등록되지 않으며 정책이 적용되지 않습니다.

참고

"등록"이라는 용어는 MDM 및 MAM 등록의 부록에서 디바이스 전체 MDM 등록 자세히 알아보기를 참조할 수도 있습니다.

등록 구현

주의

앱이 MSAL을 통합하지 않는 경우(강력하게 권장) 이 섹션을 계속 진행하는 대신 부록기본 등록을 참조하세요.

계정을 성공적으로 등록하려면 앱에서 다음 세 가지 코드를 변경해야 합니다.

  1. 앱은 MAMServiceAuthenticationCallback 인터페이스의 instance 구현하고 등록해야 합니다. 콜백 instance 애플리케이션 하위 클래스의 onCreate() (또는 onMAMCreate()) 메서드에 등록해야 합니다.

  2. 계정이 만들어지고 사용자가 MSAL로 성공적으로 로그인하면 앱은 registerAccountForMAM을 호출해야 합니다.

  3. 계정이 제거되면 앱은 unregisterAccountForMAM 을 호출하여 Intune 관리에서 계정을 제거해야 합니다.

    주의

    호출은 계정의 회사 데이터를 완전히 제거하기 위해 초기화를 시작할 수 있습니다.

필요한 모든 인증 및 등록 API는 MAMEnrollmentManager 인터페이스에서 찾을 수 있습니다. 에 대한 참조는 MAMEnrollmentManager 다음과 같이 가져올 수 있습니다.

MAMEnrollmentManager mgr = MAMComponents.get(MAMEnrollmentManager.class);

// make use of mgr

반환된 MAMEnrollmentManager instance null이 아님을 보장합니다. API 메서드는 인증계정 등록의 두 가지 범주로 분류됩니다.

MAMEnrollmentManager 및 인증

SDK는 등록된 계정을 등록하고, 앱 보호 정책 설정에 대한 업데이트를 받고, 앱 내에서 보호된 데이터를 선택적으로 초기화하는 등의 보류 중인 관리자 작업을 가져오기 위해 Intune 서비스와 자주 통신합니다. Intune 서비스와 성공적으로 통신하려면 SDK에 MSAL이 통합된 앱의 새로운 액세스 토큰이 필요합니다.

SDK가 새 토큰을 검색할 수 없는 경우 Intune 서비스와 통신할 수 없으므로 새 정책 설정 또는 관리자 작업의 검색 및 적용이 지연될 수 있습니다. 정책의 원활한 적용을 보장하기 위해 앱이 이러한 단계를 완료하는 것이 중요합니다.

2단계에서는 인증 및 액세스 토큰 획득을 위해 MSAL을 애플리케이션에 통합했습니다. 여기서는 SDK가 필요한 토큰을 요청할 수 있도록 인증 콜백을 구현합니다.

MAMEnrollmentManager 에는 다음과 같은 인증 방법이 있습니다.

interface MAMServiceAuthenticationCallback {
    String acquireToken(String upn, String aadId, String resourceId);
}
interface MAMServiceAuthenticationCallbackExtended extends MAMServiceAuthenticationCallback {
    String acquireToken(String upn, String aadId, String tenantId, String authority, String resourceId);
}
void registerAuthenticationCallback(MAMServiceAuthenticationCallback callback);
void updateToken(String upn, String aadId, String resourceId, String token);
  1. 앱은 MAMServiceAuthenticationCallback 인터페이스 또는 MAMServiceAuthenticationCallbackExtended 인터페이스를 구현하여 SDK가 지정된 계정 및 리소스 ID에 대한 Microsoft Entra 토큰을 요청할 수 있도록 해야 합니다. 콜백 instance registerAuthenticationCallback 메서드를 MAMEnrollmentManager 호출하여 에 제공해야 합니다. 등록 재시도 또는 앱 보호 정책 새로 고침 검사 위해 앱 수명 주기 초기에 토큰이 필요할 수 있으므로 앱 하위 클래스의 Application (또는 onMAMCreate()) 메서드에 onCreate() 콜백을 등록해야 합니다.

  2. 메서드는 acquireToken 지정된 계정에 대해 요청된 리소스 ID에 대한 액세스 토큰을 획득해야 합니다. 요청된 토큰을 가져올 수 없는 경우 null을 반환해야 합니다.

    앱이 에 전달된 acquireToken() 및 매개 변수를 aadId 활용하여 resourceId 올바른 토큰을 획득하는지 확인합니다. 는 resourceId 적절한 범위를 생성하는 데 사용되어야 하며 을 aadId 사용하여 올바른 계정을 전달해야 합니다. 앱이 토큰을 올바르게 획득하기 위해 Microsoft Entra 기관이 필요한 경우 인터페이스를 구현합니다MAMServiceAuthenticationCallbackExtended.

    class MAMAuthCallback implements MAMServiceAuthenticationCallback {
        public String acquireToken(String upn, String aadId, String resourceId) {
            final String[] scopes = {resourceId + "/.default"};
    
            final IAccount account = getAccount(aadId);
            if (account == null) {
                callback.onError(
                        new MsalUiRequiredException(MsalUiRequiredException.NO_ACCOUNT_FOUND, "no account found for " + aadId));
                return;
            }
    
            AcquireTokenSilentParameters params =
                new AcquireTokenSilentParameters.Builder()
                        .forAccount(account)
                        .fromAuthority(account.getAuthority())
                        .withScopes(Arrays.asList(scopes))
                        .withCallback(callback)
                        .build();
    
            return mMsalClientApplication.acquireTokenSilent(params);
        }
    
        private static IAccount getAccount(String aadId) throws InterruptedException, MsalException {
          IAccount account = null;
    
          if (mMsalClientApplication instanceof IMultipleAccountPublicClientApplication) {
              IMultipleAccountPublicClientApplication multiAccountPCA =
                      (IMultipleAccountPublicClientApplication) mMsalClientApplication;
    
              account = multiAccountPCA.getAccount(aadId);
          } else {
              ISingleAccountPublicClientApplication singleAccountPCA =
                      (ISingleAccountPublicClientApplication) mMsalClientApplication;
    
              ICurrentAccountResult accountResult = singleAccountPCA.getCurrentAccount();
              if (accountResult != null) {
                  account = accountResult.getCurrentAccount();
                  // make sure this is the correct user
                  if (account != null && !account.getId().equals(aadId))
                      account = null;
              }
          }
          return account;
      }
    }
    
  3. SDK가 호출 acquireToken() 할 때 앱이 토큰을 제공할 수 없는 경우(예: 자동 인증이 실패하고 UI를 표시하는 것이 불편한 경우) 앱은 updateToken 메서드를 호출하여 나중에 토큰을 제공할 수 있습니다. 이전 호출 acquireToken() 에서 요청한 동일한 UPN, Microsoft Entra ID 및 리소스 ID를 마지막으로 획득한 토큰과 함께 에 전달updateToken()해야 합니다. 앱은 제공된 콜백에서 null을 반환한 후 가능한 한 빨리 이 메서드를 호출해야 합니다.

    경고

    acquireToken()구현 내에서 를 호출 updateToken() 하지 마세요. updateToken() 는 토큰을 획득할 수 없는 경우에 acquireToken() 사용해야 합니다.

    참고

    SDK는 주기적으로 를 호출 acquireToken() 하여 토큰을 가져오기 때문에 호출 updateToken() 이 엄격하게 필요하지 않습니다. 그러나 등록 및 앱 보호 정책 검사 기능을 적시에 완료하는 데 도움이 될 수 있으므로 강력히 권장됩니다.

인증 구현 정보

  • 앱은 registerAccountForMAM을 호출하기 전에 Microsoft Entra 토큰을 획득하는 것이 좋습니다. 계정을 등록한 후 앱은 다른 스레드에서 등록된 MAMServiceAuthenticationCallbackacquireToken() 메서드에 대한 콜백을 받게 됩니다. 해당 콜백에 유효한 토큰을 제공하면 등록을 진행할 수 있습니다. 앱은 알림을 통해 등록 결과를 가져옵니다.

  • 앱이 유효한 Microsoft Entra 토큰을 반환하지 않으면 등록 시도의 최종 결과는 입니다AUTHORIZATION_NEEDED. 앱이 알림을 통해 이 결과를 수신하는 경우 이전에 acquireToken 에서 요청한 계정 및 리소스에 대한 토큰을 획득하고 updateToken 메서드를 호출하여 등록 프로세스를 신속하게 시작하는 것이 좋습니다.

  • 앱의 등록은 MAMServiceAuthenticationCallback 주기적인 앱 보호 정책 새로 고침 검사 토큰을 획득하기 위해 호출됩니다. 요청 시 앱이 토큰을 제공할 수 없는 경우 알림을 받지 못하지만, 검사 프로세스를 신속하게 처리하기 위해 다음 편리한 시간에 토큰을 획득하고 호출 updateToken() 하려고 시도해야 합니다. 토큰이 제공되지 않으면 다음 검사 시도에서 콜백이 호출될 수 있습니다.

  • 소버린 클라우드를 지원하려면 권한을 제공해야 합니다.

  • 인터페이스가 구현된 경우 MAMServiceAuthenticationCallbackExtended 인터페이스가 기본 구현을 제공하므로 에서 MAMServiceAuthenticationCallback 상속된 acquireToken() 메서드를 MAMServiceAuthenticationCallbackExtended 구현할 필요가 없습니다.

MAMEnrollmentManager 및 등록

앱이 계정을 추가할 때마다 SDK에 계정을 등록해야 합니다. 마찬가지로 앱이 계정을 제거할 때마다 앱이 해당 계정에 대한 정책을 더 이상 적용하지 않아야 함을 나타내기 위해 해당 계정의 등록을 취소해야 합니다. 계정이 MAM 서비스에 등록된 경우 계정이 등록 취소되고 앱이 초기화됩니다.

MAMEnrollmentManager 에는 다음과 같은 계정 등록 방법이 있습니다.

void registerAccountForMAM(String upn, String aadId, String tenantId);
void registerAccountForMAM(String upn, String aadId, String tenantId, String authority);
void unregisterAccountForMAM(String upn, String aadId);
Result getRegisteredAccountStatus(String upn, String aadId);
  1. 관리를 위해 계정을 등록하려면 앱에서 를 호출 registerAccountForMAM()해야 합니다. 계정은 UPN 및 해당 Microsoft Entra 사용자 ID로 식별됩니다. 또한 등록 데이터를 계정의 Microsoft Entra 테넌트와 연결하려면 테넌트 ID가 필요합니다. 특정 소버린 클라우드에 대한 등록을 허용하기 위해 계정의 권한을 제공할 수도 있습니다. 자세한 내용은 소버린 클라우드 등록을 참조하세요. SDK는 MAM 서비스에서 지정된 계정에 대한 앱을 등록하려고 시도할 수 있습니다. 등록에 실패하면 등록이 성공하거나 계정이 등록 취소될 때까지 정기적으로 등록을 다시 시도합니다. 재시도 기간은 일반적으로 12~24시간입니다. SDK는 알림을 통해 비동기적으로 등록 시도의 상태 제공합니다.

  2. 가장 좋은 호출 registerAccountForMAM 시간은 사용자가 앱에 로그인하고 MSAL을 사용하여 성공적으로 인증된 후입니다. 계정의 Microsoft Entra 사용자 ID 및 테넌트 ID는 와 관련된 IAuthenticationResultIAccount 일부로 MSAL 인증 호출에서 반환됩니다.

    • 계정은 메서드에서 IAuthenticationResult.getAccount() 제공되며 관련 계정 정보를 포함합니다.
    • AAD ID는 메서드에서 IAccount.getId() 가져옵니다.
    • 테넌트 ID는 메서드에서 IAccount.getTenantId() 가져옵니다.
    • 권한은 메서드에서 IAccount.getAuthority() 가져옵니다.
  3. Intune 관리에서 계정을 등록 취소하려면 앱에서 를 호출 unregisterAccountForMAM()해야 합니다. 계정이 성공적으로 등록되고 관리되는 경우 SDK는 계정 등록을 취소하고 해당 데이터를 초기화합니다. 계정에 대한 정기 등록 재시도는 중지됩니다. SDK는 알림을 통해 등록 취소 요청의 상태 비동기적으로 제공합니다.

등록 구현 정보

  • 등록 메서드는 idempotent입니다. 예를 들어 registerAccountForMAM 은 계정을 등록하고 계정이 아직 등록되지 않은 경우에만 앱을 등록하려고 시도하며 unregisterAccountForMAM 은 현재 등록된 경우에만 계정을 등록 취소합니다. 후속 호출은 no-ops이므로 이러한 메서드를 두 번 이상 호출하는 데 아무런 해가 없습니다.

  • 모든 레지스터/등록 취소 호출에 해당하는 결과 알림이 있다는 보장은 없습니다. 예를 들어 registerAccountForMAM() 이미 등록된 계정에 대해 가 호출되면 해당 ID에 대한 알림을 다시 보내지 않을 수 있습니다. 또는 SDK는 앱이 이러한 메서드를 호출하지 않은 경우에도 알림을 보낼 수 있습니다. SDK는 백그라운드에서 등록을 주기적으로 시도할 수 있으며 Intune 서비스에서 받은 초기화 요청에 의해 등록 취소가 트리거될 수 있습니다.

  • 여러 계정에 대해 등록 방법을 호출할 수 있지만 현재는 하나의 계정만 성공적으로 등록될 수 있습니다. Intune에 대한 라이선스가 부여되고 앱 보호 정책을 대상으로 하는 여러 계정이 동시에 등록되거나 거의 동시에 등록된 경우 어느 계정이 경주에서 이길지 보장할 수 없습니다.

  • MAMEnrollmentManager를 쿼리하여 특정 계정이 등록되었는지 확인하고 getRegisteredAccountStatus 메서드를 사용하여 현재 상태 가져올 수 있습니다. 제공된 계정이 등록되지 않은 경우 이 메서드는 null을 반환합니다. 계정이 등록된 경우 이 메서드는 계정의 상태 MAMEnrollmentManager.Result 열거형의 멤버 중 하나로 반환합니다.

소버린 클라우드 등록

Azure는 소버린 또는 내셔널 클라우드라고 하는 여러 물리적으로 격리된 클라우드를 지원합니다. 애플리케이션이 소버린 클라우드를 인식하는 경우 에 매개 변수를 authorityregisterAccountForMAM()제공해야 합니다.

MSAL 지침

MSAL의 경우 MSAL 구성 파일에서 를 로 설정합니다 multiple_clouds_supportedtrue.

{
  "multiple_clouds_supported": true,
}

등록 결과 및 상태 코드

계정이 처음 등록되면 초기 MAM 서비스 등록 시도가 완료되지 않았음을 나타내는 상태에서 시작 PENDING 됩니다. 등록 시도가 완료되면 아래 표의 결과 코드 중 하나와 함께 알림이 전송됩니다. 또한 getRegisteredAccountStatus 메서드는 계정의 상태 반환하므로 앱은 항상 해당 계정에 앱 보호 정책이 적용되는지 확인할 수 있습니다. 등록 시도가 실패하면 SDK가 백그라운드에서 등록을 다시 시도함에 따라 시간이 지남에 따라 계정의 상태 변경됩니다.

결과 코드 설명
AUTHORIZATION_NEEDED 이 결과는 앱의 등록된 MAMServiceAuthenticationCallback instance 토큰이 제공되지 않았거나 제공된 토큰이 잘못되었음을 나타냅니다. 앱은 유효한 토큰을 획득하고 가능한 경우 updateToken 을 호출해야 합니다.
NOT_LICENSED 계정이 Intune에 대한 라이선스가 없거나 Intune MAM 서비스에 연결하지 못했습니다. 앱은 관리되지 않는(정상) 상태로 계속되어야 하며 사용자를 차단해서는 안 됩니다. 나중에 계정이 라이선스가 부여될 경우 등록은 주기적으로 다시 시도됩니다.
ENROLLMENT_SUCCEEDED 등록 시도가 성공했거나 계정이 이미 등록되었습니다. 성공적인 등록의 경우 이 알림 전에 정책 새로 고침 알림이 전송됩니다. 회사 데이터에 대한 액세스를 허용해야 합니다.
ENROLLMENT_FAILED 등록 시도가 실패했습니다. 자세한 내용은 디바이스 로그에서 확인할 수 있습니다. 앱은 이전에 계정이 Intune에 대한 라이선스가 있다고 결정되었으므로 이 상태의 회사 데이터에 대한 액세스를 허용해서는 안 됩니다. 모든 앱은 앱에서 가져올 때까지 ENROLLMENT_SUCCEEDED 회사 데이터 액세스 권한이 없는지 확인해야 합니다.
WRONG_USER 디바이스당 하나의 계정만 MAM 서비스에 앱을 등록할 수 있습니다. 이 결과는 이 결과가 전달된 계정(두 번째 계정)이 MAM 정책을 대상으로 하지만 다른 계정이 이미 등록되어 있음을 나타냅니다. 두 번째 계정에 MAM 정책을 적용할 수 없으므로 나중에 이 계정에 대한 등록이 성공하지 않는 한 앱에서 이 계정의 데이터에 대한 액세스를 허용해서는 안 됩니다(앱에서 계정을 제거한 경우). 이 WRONG_USER 결과를 전달하는 동시에 MAM은 기존 계정을 제거하는 옵션을 묻는 메시지를 표시합니다. 사용자가 긍정에 응답하는 경우 실제로 잠시 후 두 번째 계정을 등록할 수 있습니다. 두 번째 계정이 등록된 상태로 유지되는 한 MAM은 정기적으로 등록을 다시 시도합니다.
UNENROLLMENT_SUCCEEDED 등록 취소가 성공했습니다.
UNENROLLMENT_FAILED 등록 취소 요청이 실패했습니다. 자세한 내용은 디바이스 로그에서 확인할 수 있습니다. 일반적으로 앱이 유효한(둘 다ull도 비어 있지도 않음) UPN을 전달하는 한 이 문제가 발생하지 않습니다. 앱에서 수행할 수 있는 직접적이고 신뢰할 수 있는 수정은 없습니다. 유효한 UPN을 등록 취소할 때 이 값이 수신되면 Intune MAM 팀에 버그로 보고합니다.
PENDING 계정에 대한 초기 등록 시도가 진행 중입니다. 앱은 등록 결과가 알려질 때까지 회사 데이터에 대한 액세스를 차단할 수 있지만 그렇게 할 필요는 없습니다.
COMPANY_PORTAL_REQUIRED 계정은 Intune에 대해 라이선스가 부여되지만 회사 포털 앱이 디바이스에 설치될 때까지 앱을 등록할 수 없습니다. Intune 앱 SDK는 지정된 계정에 대한 앱에 대한 액세스를 차단하고 회사 포털 앱을 설치하도록 지시합니다. 이 알림을 앱으로 보낼 때 Intune 앱 SDK는 활동이 현재 사용자에게 표시되거나 다음에 onResume 호출될 때 현재 작업 위에 비 차단 UI를 표시합니다. 사용자가 이 비 차단 UI를 취소하는 경우 Intune 앱 SDK는 다음에 onCreate 활동에 대해 호출되고 현재 ID가 관리되는 차단 UI를 표시합니다(문제 해결에 대한 자세한 내용은 아래 참조).

기록된 데이터에서 가장 많은 값을 얻으려면 로깅을 일찍 초기화해야 합니다. Application.onMAMCreate() 은 일반적으로 로깅을 초기화하는 데 가장 적합한 위치입니다.

앱에서 MAM 로그를 받으려면 Java 처리기를 만들고 MAMLogHandlerWrapper에 추가합니다. 그러면 모든 로그 메시지에 대한 애플리케이션 처리기에서 호출 publish() 됩니다.

/**
 * Global log handler that enables fine grained PII filtering within MAM logs.  
 * To start using this you should build your own log handler and add it via
 * MAMComponents.get(MAMLogHandlerWrapper.class).addHandler(myHandler, false);  
 * You may also remove the handler entirely via
 * MAMComponents.get(MAMLogHandlerWrapper.class).removeHandler(myHandler);
 */
public interface MAMLogHandlerWrapper {
    /**
     * Add a handler, PII can be toggled.
     * @param handler handler to add.
     * @param wantsPII if PII is desired in the logs.    
     */
    void addHandler(final Handler handler, final boolean wantsPII);

    /**
     * Remove a handler.
     * @param handler handler to remove.
     */
    void removeHandler(final Handler handler);
}

참고

PII는 "개인 식별 가능한 정보"를 의미하며 사용자 이름 및 UPN과 같은 데이터를 포함할 수 있습니다. 사용자 고유의 프로덕션 로그에서 이러한 개인 정보를 제외하는 것이 좋습니다. 자세한 내용은 Microsoft 개인정보처리방침 을 참조하세요.

Intune 회사 포털 앱에는 진단 정보를 수집하기 위한 여러 옵션이 있습니다. 회사 포털 다음과 같은 UI를 포함합니다.

  • 최종 사용자가 회사 포털 로그를 수집할 수 있습니다.
  • 디바이스 및 계정 메타데이터를 표시합니다.
  • 현재 MAM 정책에 대한 앱별 정보를 포함합니다.

Intune 진단 UIIntune 앱 정보

회사 포털 로그 및 진단 UI에 포함된 데이터에 대한 자세한 설명은 부록회사 포털 로그 이해를 참조하세요.

MAM 정책을 적용해야 하는 계정으로 테스트하는 경우 진단 앱의 패키지 이름에 대한 정책을 표시하지 않는 경우 아래 문제 해결 섹션을 참조하세요.

앱은 를 호출하여 이 진단 UI를 시작할 수 있습니다MAMPolicyManager.showDiagnostics(context). 최종 사용자는 주소 표시줄에 를 입력 about:intunehelp 하여 Microsoft Edge를 통해 회사 포털 진단 콘솔을 시작할 수도 있습니다. 디버깅에 도움이 될 수 있는 선택적 기능입니다.

이 진단 정보는 회사 포털 디바이스에 설치된 경우에만 사용할 수 있습니다. 회사 포털 설치하지 않고 호출될 때마다 showDiagnostics 경고 대화 상자가 표시됩니다.

종료 조건

통합의 이 시점에서 앱은 이제 앱 보호 정책을 수신하고 적용할 수 있습니다. 다음 테스트를 실행하여 통합의 유효성을 검사합니다.

첫 번째 정책 애플리케이션 테스트

먼저 다음 테스트를 실행하여 앱 내에서 정책 애플리케이션의 전체 최종 사용자 환경을 알아봅니다.

  1. Microsoft Intune 관리 센터에서 Android 앱 보호 정책을 만듭니다(자세한 내용은 1단계에서 테스트 Android 앱 보호 정책 만들기 참조). 이 테스트의 경우 정책을 구성합니다.
    • 데이터 보호에서 "화면 캡처 및 Google Assistant"를 "차단"으로 설정합니다.
    • 액세스 요구 사항에서 기본 설정을 그대로 둡니다. 특히 "액세스용 PIN"은 "필요"여야 합니다.
  2. 앱 보호 정책이 애플리케이션을 대상으로 지정되었는지 확인합니다. 정책 만들기 마법사에서 패키지 이름을 수동으로 추가해야 할 수 있습니다.
  3. 테스트 계정이 포함된 사용자 그룹에 앱 보호 정책을 할당합니다.
  4. 테스트 Android 디바이스에서 Microsoft Outlook, Teams, OneDrive 및 Office와 같은 다른 SDK 통합 앱을 제거합니다. 또한 Intune 회사 포털 앱 및 Microsoft Authenticator 앱을 제거합니다.
    • 다른 SDK 통합 앱을 제거하면 자체 앱의 통합을 독점적으로 테스트하는 데 도움이 됩니다.

  5. 애플리케이션을 설치합니다.
  6. 앱 보호 정책을 대상으로 하는 테스트 계정으로 애플리케이션에 로그인합니다.
  7. Google Play에서 Intune 회사 포털 설치하라는 메시지가 표시되는지 확인합니다.
    • 참고

      테스트 디바이스에 Google Play 스토어 앱이 없는 경우 다른 앱 스토어 또는 Microsoft 웹 사이트에서 Intune 회사 포털 설치하라는 메시지가 표시되는지 확인합니다.

  8. 회사 포털 설치합니다. 회사 포털 시작하거나 회사 포털 로그인할 필요가 없습니다.
  9. 필요한 경우 앱으로 돌아가 다시 로그인합니다.
  10. 액세스 가져오기 화면이 표시되는지 확인합니다. 이는 SDK가 이 계정에 대한 정책을 성공적으로 검색했음을 나타냅니다.
  11. 앱 PIN을 설정하라는 메시지가 표시됩니다. PIN을 만듭니다.
  12. 애플리케이션을 탐색하고 스크린샷을 찍으려고 시도합니다. SDK에 정책이 있다는 점을 감안할 때 모든 화면에서 일관되게 차단되어야 합니다.
  13. 애플리케이션에서 관리되는 계정을 기록합니다.
  14. 로그인하지 않고 가능하면 애플리케이션을 탐색하고 스크린샷을 찍어 보세요. 이제 계정이 제거되었으므로 차단하면 안 됩니다.

앱이 계정을 올바르게 등록하고, 인증 콜백을 등록하고, 계정을 등록 취소했는지 확인하는 최소 테스트입니다. 다음 테스트를 실행하여 다른 앱 보호 정책 설정이 애플리케이션의 동작을 수정하는 방법을 보다 철저하게 확인합니다.

데이터 보호 테스트

다음 테스트는 앱 보호 정책 내에서 구성된 특정 데이터 보호 설정을 다룹니다. Microsoft Intune 관리 센터에서 앱 보호 정책 설정을 변경하면 클라이언트가 즉시 업데이트되지 않습니다. 테스트 속도 향상에 대한 팁은 변경 정책을 사용하여 신속하게 테스트를 참조하세요.

이러한 테스트의 경우:

  1. 앱을 설치합니다.
  2. Intune 회사 포털 설치합니다.
  3. 데이터(예: Microsoft Office)를 복사하여 붙여넣을 수 있는 앱과 동일한 정책을 대상으로 하는 다른 관리형 앱을 설치합니다.
  4. 데이터를 복사하여 붙여넣을 수 있는 관리되지 않는 앱을 설치(또는 다시 사용)합니다.
  5. 테스트 관리 계정을 사용하여 앱에 로그인합니다.
  6. 관리되는 테스트 계정으로 다른 관리형 앱에 로그인합니다.
시나리오 앱 보호 정책 설정 테스트 단계
스크린샷 "차단"으로 설정된 "화면 캡처 및 Google Assistant" 1. 앱의 모든 페이지로 이동합니다.
2. 각 페이지에서 스크린샷을 찍으려고 시도합니다.
3. 스크린샷이 차단되거나 저장된 이미지가 완전히 비어 있는지 확인합니다.
텍스트 복사 "정책 관리 앱"으로 설정된 "다른 앱 간에 잘라내기, 복사 및 붙여넣기 제한" 0. 앱에 복사할 텍스트가 없는 경우 건너뜁니다.
1. 복사 가능한 텍스트가 있는 앱의 모든 페이지로 이동합니다.
2. 텍스트를 복사합니다.
3. 관리되지 않는 앱으로 전환합니다.
4. 관리되지 않는 앱에 붙여 넣습니다.
5. 붙여넣기 차단을 확인합니다.
6. 다른 관리되는 앱으로 이동합니다.
7. 관리되는 앱에 붙여넣으려고 시도합니다.
8. 붙여 넣을 수 있는지 확인합니다.
텍스트 붙여넣기 "정책 관리 앱"으로 설정된 "다른 앱 간에 잘라내기, 복사 및 붙여넣기 제한" 0. 앱에 붙여넣을 텍스트 입력이 없는 경우 건너뜁니다.
1. 관리되지 않는 앱으로 전환합니다.
2. 관리되지 않는 앱에서 텍스트를 복사합니다.
3. 텍스트 입력이 있는 앱의 모든 페이지로 이동합니다.
5. 관리되지 않는 앱에서 붙여넣으려고 시도합니다.
5. 붙여넣기 차단을 확인합니다.
6. 다른 관리되는 앱으로 전환합니다.
7. 다른 관리되는 앱에서 텍스트를 복사합니다.
7. 텍스트 입력이 있는 앱의 모든 페이지로 이동합니다.
8. 다른 관리되는 앱에서 붙여넣으려고 시도합니다.
9. 붙여넣기를 허용하는지 확인합니다.
인쇄 "조직 데이터 인쇄"를 "차단"으로 설정 0. 앱에 인쇄할 수 있는 페이지나 문서가 없는 경우 건너뜁니다.
1. Android의 인쇄 함수를 호출하는 앱의 모든 페이지로 이동합니다.
2. 각 페이지에서 인쇄를 시도합니다.
3. 인쇄가 차단되어 있는지 확인합니다.
관리되는 브라우저 "다른 앱으로 웹 콘텐츠 전송 제한"이 "Microsoft Edge"로 설정됨 0. 앱이 웹 링크를 렌더링하지 않으면 건너뜁니다.
1. 웹 링크를 표시하거나 클릭 가능한 웹 링크로 렌더링되는 텍스트 입력이 있는 앱의 모든 페이지로 이동합니다.
2. 각 페이지에 대해 웹 링크를 선택합니다.
3. Microsoft Edge를 설치하라는 메시지가 표시되고 웹 링크가 다른 브라우저에서 열리지 않는지 확인합니다.
제한된 키보드 "승인된 키보드"가 "필수"로 설정됨
디바이스가 현재 설치되지 않은 키보드 패키지로 "승인할 키보드 선택" 설정
0. 앱에 텍스트 입력이 없는 경우 건너뜁니다.
1. 텍스트 입력이 있는 앱의 모든 페이지로 이동합니다.
2. 디바이스 키보드를 표시할 텍스트 입력을 선택합니다.
3. 구성된 승인된 키보드를 설치하라는 메시지가 표시되고 현재 장치 키보드가 열리지 않는지 확인합니다.

데이터 전송 테스트

데이터 전송 설정은 관리되는 앱의 데이터 입력 및 종료를 제어하는 App Protection 정책 데이터 보호 기능의 하위 집합입니다. 다른 앱으로 데이터를 보내 거나 다른 앱에서 데이터를 받는 것을 지원하는 대부분의 앱에는 로컬 또는 클라우드 스토리지에서 데이터를 저장 하고 는 기능도 있습니다. 앱에 이러한 기능이 있는 경우 추가 지원을 구현해야 합니다. 자세한 내용은 앱과 디바이스 또는 클라우드 스토리지 위치 간의 데이터 전송을 제한하는 정책을 참조하세요 .

앱은 Microsoft OneDrive에서 파일을 첨부하는 Microsoft Outlook과 같은 다른 앱에서 데이터를 적극적으로 가져올 수 있습니다. 앱은 Microsoft Outlook 첨부 파일에서 문서를 여는 Microsoft Office와 같은 다른 앱에서 데이터를 수동적으로 받을 수도 있습니다. 수신 앱 보호 정책 설정은 두 시나리오를 모두 다룹니다.

이러한 테스트의 경우:

  1. 앱을 설치합니다.
  2. Intune 회사 포털 설치합니다.
  3. Microsoft Outlook과 같이 데이터를 보내고 받을 수 있는 앱과 동일한 정책을 대상으로 하는 다른 관리형 앱을 설치합니다.
  4. 데이터를 보내고 받을 수 있는 관리되지 않는 앱을 설치(또는 다시 사용)합니다.
  5. 테스트 관리 계정을 사용하여 앱에 로그인합니다.
  6. 관리되는 테스트 계정으로 다른 관리형 앱에 로그인합니다.
시나리오 앱 보호 정책 설정 테스트 단계
다른 앱으로 데이터 보내기 "다른 앱에 조직 데이터 보내기"가 "정책 관리 앱"으로 설정됩니다. 0. 앱에서 다른 앱으로 데이터를 보낼 수 없는 경우 건너뜁니다.
1. 앱에서 데이터를 보낼 수 있는 위치로 이동합니다.
2. 데이터를 보내려고 시도합니다.
3. 다른 관리되는 앱으로만 데이터를 보내는 것으로 제한되는지 확인합니다. 관리되는 앱만 있는 앱 선택기가 표시됩니다.
다른 앱에서 데이터 가져오기 "다른 앱에서 데이터 받기"를 "정책 관리 앱"으로 설정 0. 앱이 다른 앱에서 데이터를 가져올 수 없는 경우 건너뜁니다.
1. 앱이 다른 앱에서 데이터를 가져올 수 있는 위치로 이동합니다.
2. 데이터를 가져오려고 시도합니다.
3. 다른 관리되는 앱에서만 데이터를 가져오는 것으로 제한되는지 확인합니다. 관리되는 앱만 있는 앱 선택기가 표시됩니다.
관리되지 않는 앱에서 데이터 수신 "다른 앱에서 데이터 받기"를 "정책 관리 앱"으로 설정 0. 앱이 다른 앱에서 데이터를 받을 수 없는 경우 건너뜁니다.
1. 관리되지 않는 앱으로 전환합니다.
2. 데이터를 보낼 수 있는 위치로 이동합니다.
3. 관리되지 않는 앱에서 앱으로 데이터를 보내려고 시도합니다.
4. 앱이 관리되지 않는 앱에서 데이터를 받을 수 없는지 확인합니다.
관리되는 앱에서 데이터 수신 "다른 앱에서 데이터 받기"를 "정책 관리 앱"으로 설정 0. 앱이 다른 앱에서 데이터를 받을 수 없는 경우 건너뜁니다.
1. 다른 관리되는 앱으로 전환합니다.
2. 데이터를 보낼 수 있는 위치로 이동합니다.
3. 다른 관리되는 앱에서 앱으로 데이터를 보내려고 시도합니다.
4. 앱이 다른 관리되는 앱에서 데이터를 받을 수 있는지 확인합니다.

기타 데이터 보호 설정

앱에서 추가 변경 내용을 적용할 때까지 다음 데이터 보호 설정이 적용되지 않습니다. 이 단계에서는 이러한 설정을 테스트할 필요가 없습니다. 자세한 내용은 7단계: 앱 참여 기능을 참조하세요.

시나리오 앱 보호 정책 설정 지원을 구현해야 하는 경우...
데이터 복사본 저장 조직 데이터 복사본 저장 애플리케이션은 로컬 또는 클라우드 스토리지에 데이터를 저장할 수 있습니다.
스토리지에서 데이터 열기 조직 문서에 데이터 열기 애플리케이션은 로컬 또는 클라우드 스토리지에서 데이터를 열 수 있습니다.
관리 알림 콘텐츠 조직 데이터 알림 앱에는 알림 내에 사용자 데이터가 포함됩니다.
백업 및 복원 Android 백업 서비스에 조직 데이터 백업 앱은 Android의 백업 기능과 사용자 데이터를 공유합니다.

조건부 시작 테스트

조건부 시작 설정은 구성 가능한 디바이스 전체 또는 앱별 기준에 따라 앱에 대한 액세스를 제한하는 앱 보호 정책 기능의 하위 집합입니다. 이러한 설정에는 조건(예: "최소 OS 버전")과 작업(예: "액세스 차단")이 모두 포함됩니다. 조건부 시작 작업은 다음 중 하나일 수 있습니다.

  • 경고: 최종 사용자에게 디바이스 또는 앱이 조건에 실패하면 경고 대화 상자가 표시됩니다. 여전히 모든 앱 데이터에 액세스할 수 있습니다.
  • 액세스 차단: 최종 사용자에게 디바이스 또는 앱이 조건에 실패하면 경고 대화 상자가 표시됩니다. 조건을 충족하거나 앱에서 관리 계정을 제거할 때까지 앱에 입력하고 앱 데이터에 액세스할 수 없습니다.
  • 데이터 초기화: 디바이스 또는 앱이 조건에 실패하면 관리되는 계정과 연결된 모든 회사 데이터가 초기화됩니다. 사용자는 데이터가 제거되기 전에 조건을 충족할 기회가 없습니다.

일부 조건부 시작 설정은 여러 값 및 작업으로 구성할 수 있습니다. 예를 들면

  • 최소 OS 버전, 값 "10.0", 작업 집합은 "Warn"입니다.
  • 최소 OS 버전, 값 "9.0", "액세스 차단"으로 설정된 작업
  • 최소 OS 버전, 값 "8.0", 작업 집합은 "데이터 초기화"입니다.

이 단계에서 통합 단계를 완료하면 이제 앱에서 모든 조건부 시작 기능을 지원합니다. 테스트 디바이스와 같은 정책 항목을 변경하여 조건부 시작 기능을 숙지합니다.

  • 구성된 모든 조건부 시작 설정을 전달합니다.
  • "경고" 작업으로 설정된 구성된 조건부 시작 설정에 실패합니다.
  • "액세스 차단" 작업으로 설정된 구성된 조건부 시작 설정에 실패합니다.
  • "데이터 초기화" 작업으로 설정된 구성된 조건부 시작 설정에 실패합니다.

문제 해결

첫 번째 정책 애플리케이션 테스트 문제 해결

위의 첫 번째 정책 애플리케이션 테스트 단계에 따라 다음과 같은 예기치 않은 동작이 발생할 수 있습니다.

관리되는 계정으로 로그인한 후 회사 포털 설치하라는 메시지가 표시되지 않습니다(7단계).

먼저 Intune 관리 센터를 방문하여 앱 보호 정책이 테스트 계정의 대상임을 두 번 검사.

둘째, 에 대한 호출 registerAccountForMAM 및 구현MAMServiceAuthenticationCallback을 위해 소스 코드를 두 번 검사. 이 전자가 적시에 호출되지 않거나 후자가 유효한 토큰을 제대로 제공하지 않으면 회사 포털 프롬프트가 표시되지 않습니다.

마지막으로 등록 결과 코드에 대한 로그(또는 디버깅)를 확인하거나 계정에서 명시적으로 를 호출 getRegisteredAccountStatus 합니다. NOT_LICENSED 같은 코드는 테스트 계정의 구성 문제를 나타낼 수 있습니다.

로그인한 후 액세스 가져오기 화면이 표시되지 않음(10단계)

회사 포털 이전에 설치되지 않은 경우 액세스 가져오기 화면을 보고 정책을 올바르게 적용하려면 애플리케이션을 다시 시작하거나 완전히 다시 시작해야 할 수 있습니다. 이는 SDK 통합 앱이 회사 포털 앱 내에서 코드를 활용하는 방법에 따라 예상되는 결과입니다.

앱을 다시 시작하고 다시 로그인한 후에도 액세스 가져오기 화면이 표시되지 않으면 SDK가 계정을 등록하거나 계정에 대한 정책을 검색하지 못할 수 있습니다. 소스 코드의 구현MAMServiceAuthenticationCallback을 두 번 검사.

로그인한 후 앱 PIN을 설정하거나 입력할 화면이 표시되지 않음(11단계)

테스트 디바이스에 다른 SDK 통합 애플리케이션이 있나요? 앱 PIN은 모든 관리되는 앱 간에 공유되며, SDK에는 관리되는 모든 앱 시작 또는 다시 시작 시 최종 사용자에게 PIN을 묻는 메시지가 표시되지 않도록 하는 전역 타이머가 있습니다.

그렇지 않으면 Intune 관리 센터를 방문하여 앱 보호 정책이 앱 PIN을 사용하도록 설정되어 있고 테스트 계정을 대상으로 하는 검사 두 번 방문합니다.

최후의 수단으로 디바이스를 다시 시작하면 PIN 타이머가 다시 설정됩니다. 디바이스를 다시 시작한 후 PIN 화면이 표시되지 않으면 정책에서 제대로 구성되지 않을 수 있습니다.

액세스 가져오기 화면이 표시되었지만 스크린샷은 여전히 허용됩니다(12단계).

정책을 검색하는 동안 잘못된 정책이 적용되고 있습니다. 먼저 Intune 관리 센터를 방문하여 앱 보호 정책이 스크린샷을 사용하지 않도록 설정하고 테스트 계정을 대상으로 하는 것을 두 번 검사. 둘째, 위에서 설명한 진단 콘솔을 사용하여 앱에 대해 끌어온 정책을 검사. 두 정책 모두 스크린샷을 차단해야 하는지 확인하는 경우 Gradle 빌드 플러그 인 구성을 검사 MAM 교체가 수행되고 있는지 확인합니다.

로그아웃한 후 앱이 충돌하거나 닫히는 것처럼 보였습니다(13단계)

이전에 등록하고 정책을 적용한 계정을 등록 취소하면 해당 계정과 연결된 데이터가 SDK에 의해 초기화됩니다. 앱 프로세스 종료가 필요합니다.

로그아웃한 후에도 스크린샷이 여전히 차단됩니다(14단계)

에 대한 호출을 위해 소스 코드를 두 번 검사unregisterAccountForMAM(). 로그아웃한 후에도 정책이 계속 적용되는 경우 계정이 제대로 등록 취소되고 등록 취소되지 않았을 수 있습니다.

데이터 보호 테스트 문제 해결

위의 데이터 보호 테스트 단계에 따라 다음과 같은 예기치 않은 동작이 발생할 수 있습니다.

내 앱이 정책을 받거나 적용하지 않습니다.

먼저 앱 보호 정책이 테스트 계정을 포함하는 그룹을 대상으로 하는지 확인합니다. 자세한 내용은 Microsoft Intune 앱 보호 정책 설정의 유효성을 검사하는 방법을 참조하세요.

둘째, 클라이언트 진단 정보를 검사 SDK가 구성된 정책을 수신했는지 확인합니다. 그렇지 않은 경우 앱의 구현 MAMServiceAuthenticationCallback 을 검사하고 를 호출합니다 registerAccountForMAM. 또한 로그 또는 디버그를 검사 를 확인합니다MAMEnrollmentManager.Result.

내 앱이 관리되지 않는 앱에 데이터를 공유할 수 있습니다.

"다른 앱에 조직 데이터 보내기"가 "정책 관리 앱"으로 설정되어 있음을 확인합니다. Microsoft Intune 관리 센터를 확인하여 정책이 올바르게 구성되고 대상으로 지정되었는지 확인합니다. 클라이언트 진단 정보를 확인하여 SDK가 구성된 정책을 받았는지 확인합니다.

다음으로, 정책이 올바르게 구성되고 검색되면 정책이 적용되는지 검사. 내 앱이 정책을 받거나 적용하지 않습니다.

내 앱이 다른 관리되는 앱과 데이터를 공유할 수 없음

과 다른 관리되는 앱 모두를 대상으로 하는 앱 보호 정책 설정을 확인합니다. 두 앱을 대상으로 동일한 정책을 지정하는 것이 좋습니다. 앱을 대상으로 하는 정책에는 "조직 데이터를 다른 앱으로 보내기"가 "정책 관리 앱"으로 설정되어 있어야 합니다. 다른 앱을 대상으로 하는 정책을 확인합니다. "다른 앱에서 데이터 받기"가 "없음"으로 설정된 경우 이 동작이 예상됩니다.

내 앱은 관리되지 않는 앱에서 데이터를 받을 수 있습니다.

"다른 앱에서 데이터 받기"가 "정책 관리 앱"으로 설정되어 있음을 확인합니다. Microsoft Intune 관리 센터를 확인하여 정책이 올바르게 구성되고 대상으로 지정되었는지 확인합니다. 클라이언트 진단 정보를 확인하여 SDK가 구성된 정책을 받았는지 확인합니다.

다음으로, 정책이 올바르게 구성되고 검색되면 정책이 적용되는지 검사. 내 앱이 정책을 받거나 적용하지 않습니다.

내 앱이 다른 관리되는 앱에서 데이터를 받을 수 없음

과 다른 관리되는 앱 모두를 대상으로 하는 앱 보호 정책 설정을 확인합니다. 두 앱을 대상으로 동일한 정책을 지정하는 것이 좋습니다. 앱을 대상으로 하는 정책에는 "다른 앱에서 데이터 받기"가 "정책 관리 앱"으로 설정되어 있어야 합니다. 다른 앱을 대상으로 하는 정책을 확인합니다. "다른 앱에 조직 데이터 보내기"가 "없음"으로 설정된 경우 이 동작이 예상됩니다.

다음 단계

위의 모든 종료 조건을 완료하면 앱이 이제 단일 ID로 성공적으로 통합되고 모든 기본 앱 보호 정책을 적용할 수 있습니다. 후속 섹션인 5단계: 다중 ID, 6단계: App Configuration7단계: 앱의 원하는 앱 보호 정책 지원에 따라 앱 참여 기능이 필요할 수도 있고 필요하지 않을 수도 있습니다. 이러한 섹션이 앱에 적용되는지 확실하지 않은 경우 SDK 통합을 위한 주요 결정을 다시 방문하세요.