iOS용 앱 SDK Intune - 앱 참여 기능

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

참고

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

4단계: 앱 참여 기능

스테이지 Goals

  • Intune 앱 SDK에서 제공하는 다양한 앱 참여 기능에 대해 알아봅니다.
  • 앱 및 사용자와 관련된 앱 참여 기능을 통합합니다.
  • 이러한 기능의 통합을 테스트합니다.

"앱 참여 기능"이란?

이 SDK 통합 프로세스는 개발자가 작성해야 하는 앱별 코드의 양을 최소화하려고 시도합니다. SDK 통합의 이전 단계를 성공적으로 완료하면 이제 앱에서 파일 암호화, 복사/붙여넣기 제한, 스크린샷 차단 및 데이터 전송 제한과 같은 대부분의 앱 보호 정책 설정을 적용할 수 있습니다.

그러나 제대로 적용하려면 앱별 코드가 필요한 몇 가지 설정이 있습니다. 이를 앱 참여 기능이라고 합니다. 일반적으로 SDK는 애플리케이션의 코드 또는 최종 사용자 시나리오에 대한 컨텍스트가 부족하여 이러한 설정을 자동으로 적용하므로 개발자가 SDK API를 적절하게 호출해야 합니다.

앱 참여 기능이 반드시 선택 사항인 것은 아닙니다. 앱의 기존 기능에 따라 이러한 기능이 필요할 수 있습니다.

이 가이드의 다음 단계에서는 몇 가지 중요한 앱 참여 기능을 설명합니다.

이 가이드의 나머지 부분에는 나머지 앱 참여 기능 집합이 설명되어 있습니다.

  • 허용되는 계정 구현
  • 파일 암호화 구현 필요
  • 다른 이름으로 저장 및 열기 컨트롤 구현
  • UIActivityViewController를 통해 데이터 공유
  • iOS 애플리케이션에 대해 대상 구성(APP/MAM 앱 구성) 사용
  • 원격 분석
  • Siri 의도
  • 앱 클립
  • 인쇄
  • 알림
  • 빌드 후 스크립트

API를 사용하여 앱 동작 사용자 지정

Intune 앱 SDK에는 앱에 배포된 Intune APP 정책에 대한 정보를 가져오기 위해 호출할 수 있는 여러 API가 있습니다. 이 데이터를 사용하여 앱의 동작을 사용자 지정할 수 있습니다. 다음 표에서는 사용하는 몇 가지 필수 Intune 클래스에 대한 정보를 제공합니다.

클래스 설명
IntuneMAMPolicyManager.h IntuneMAMPolicyManager 클래스는 애플리케이션에 배포된 Intune APP 정책을 노출합니다. 특히 다중 ID를 사용하도록 설정하는 데 유용한 API를 노출합니다.
IntuneMAMPolicy.h IntuneMAMPolicy 클래스는 앱에 적용되는 일부 MAM 정책 설정을 노출합니다. 이러한 정책 설정의 대부분은 앱이 UI를 사용자 지정할 수 있도록 노출됩니다. 대부분의 정책 설정은 앱이 아닌 SDK에 의해 적용됩니다. 여기에는 몇 가지 예외가 있습니다. 앱 개발자는 이 헤더의 주석을 검토하여 애플리케이션의 시나리오에 적용할 수 있는 API를 결정해야 합니다.
IntuneMAMFileProtectionManager.h IntuneMAMFileProtectionManager 클래스는 앱이 제공된 ID를 기반으로 파일 및 디렉터리를 명시적으로 보호하는 데 사용할 수 있는 API를 노출합니다. ID는 Intune 또는 비관리형으로 관리할 수 있으며 SDK는 적절한 MAM 정책을 적용합니다. 이 클래스를 사용하는 것은 선택 사항입니다.
IntuneMAMDataProtectionManager.h IntuneMAMDataProtectionManager 클래스는 제공된 ID가 제공된 경우 앱이 데이터 버퍼를 보호하는 데 사용할 수 있는 API를 노출합니다. ID는 Intune 또는 비관리형으로 관리할 수 있으며 SDK는 암호화를 적절하게 적용합니다.

허용되는 계정 구현

Intune 통해 IT 관리자는 사용자가 로그인할 수 있는 계정을 지정할 수 있습니다. 앱은 Intune 앱 SDK에서 지정된 허용 계정 목록을 쿼리한 다음 허용된 계정만 디바이스에 로그인했는지 확인할 수 있습니다.

허용된 계정을 쿼리하려면 앱이 의 IntuneMAMEnrollmentManager속성을 검사 allowedAccounts 합니다. 속성은 allowedAccounts 허용된 계정 또는 nil을 포함하는 배열입니다. 속성이 nil이면 허용된 계정이 지정되지 않았습니다. MSAL/OneAuth 사용 애플리케이션은 instance 속성을 IntuneMAMEnrollmentManager 사용하여 allowedAccountIds OID를 쿼리해야 합니다.

앱은 알림을 관찰하여 속성의 allowedAccounts 변경 내용에 반응할 수도 있습니다 IntuneMAMAllowedAccountsDidChangeNotification . 속성 값이 변경될 때마다 알림이 allowedAccounts 게시됩니다.

허용되는 계정에 API를 사용하는 경우 다음 요구 사항이 필요합니다.

  • ID 비교는 UPN 및 OID에 대해 대/소문자를 구분하지 않아야 합니다.
  • ID 비교는 UPN과 OID를 모두 지원해야 합니다.
  • 애플리케이션에는 관리자가 지정한 계정과 사용자 입력 계정 간의 불일치를 진단하기 위한 로깅이 있어야 합니다.

파일 암호화 구현 필요

IntuneMAMPolicy.h 정의된 API는 isFileEncryptionRequired IT 관리자가 애플리케이션이 디스크에 저장된 모든 파일에서 Intune 암호화를 사용하도록 요구하는 경우 애플리케이션에 알릴 수 있습니다. 가 true이면 isFileEncryptionRequired 앱에서 디스크에 저장된 모든 파일이 , IntuneMAMFileProtectionManager.hIntuneMAMFDataProtectionManager.h의 APIIntuneMAMFile.h를 사용하여 암호화되도록 하는 것은 앱의 책임입니다.

앱은 에 정의된 알림을 관찰하여 이 정책의 IntuneMAMDataProtectionDidChangeNotification 변경 내용에 대응할 수 있습니다 IntuneMAMFDataProtectionManager.h.

다른 이름으로 저장 및 열기 컨트롤 구현

Intune IT 관리자는 관리되는 앱이 데이터를 저장하거나 데이터를 열 수 있는 스토리지 위치를 선택할 수 있습니다. 앱은 에 정의된 API를 사용하여 isSaveToAllowedForLocation:withAccount: 허용되는 스토리지 위치에 대해 Intune MAM SDK를 쿼리할 수 있습니다IntuneMAMPolicy.h. 앱은 에 정의된 API를 사용하여 isOpenFromAllowedForLocation:withAccount: 허용된 오픈-인 스토리지 위치에 대해 SDK를 쿼리할 수도 있습니다 IntuneMAMPolicy.h.

또한 앱은 에 정의된 API를 쿼리하여 공유 확장에서 canReceiveSharedItemProvider: 들어오는 데이터가 허용되는지 확인할 수 있습니다 IntuneMAMPolicy.h. 앱은 API를 canReceiveSharedFile: 쿼리하여 openURL 호출에서 들어오는 파일을 확인할 수도 있습니다. 또한 에 정의되어 있습니다. IntuneMAMPolicy.h

참고

MAM SDK v15.1.0부터 내부 동작이 변경되었습니다.

  • nil 계정은 더 이상 LocalDrive/LocalStorage 위치의 현재 계정으로 취급되지 않습니다. nil 계정을 전달하면 관리되지 않는 계정으로 처리됩니다. 앱은 샌드박스 스토리지를 처리하는 방법을 제어할 수 있으므로 ID는 해당 위치와 연결될 수 있고 연결되어야 합니다.
  • nil 계정은 더 이상 단일 ID 앱의 현재 계정으로 취급되지 않습니다. 이제 단일 ID 앱에서 nil 계정을 전달하면 다중 ID 앱에 전달된 것과 동일하게 처리됩니다. 단일 ID 앱을 개발하는 경우 를 사용하여 IntuneMAMPolicyprimaryUser 관리되는 경우 현재 계정을 참조하고 nil 관리되지 않는 경우 현재 계정을 참조하세요.

저장 시나리오 처리

데이터를 새 클라우드 스토리지 또는 로컬 위치로 이동하기 전에 앱은 IT 관리자가 데이터 전송을 허용했는지 확인하기 위해 API와 isSaveToAllowedForLocation:withAccount: 검사 합니다. 이 메서드는 개체에서 IntuneMAMPolicy 호출됩니다. 현재 위치에서 편집 및 저장되는 데이터는 이 API로 확인할 필요가 없습니다.

참고

개체는 IntuneMAMPolicy 저장되는 데이터의 소유자 정책을 나타내야 합니다. 특정 ID의 IntuneMAMPolicy 개체를 얻으려면 의 policyForIdentity: 메서드를 호출IntuneMAMPolicyManager합니다. 소유자가 ID nil 가 없는 관리되지 않는 계정인 경우 에 policyForIdentity:전달할 수 있습니다. 저장되는 데이터가 조직 데이터가 isSaveToAllowedForLocation:withAccount: 아니더라도 를 호출해야 합니다. 대상 위치를 소유한 계정에는 들어오는 관리되지 않는 데이터를 제한하는 정책이 여전히 있을 수 있습니다.

메서드는 isSaveToAllowedForLocation:withAccount: 두 개의 인수를 사용합니다. 첫 번째 인수는 에 정의된 형식 IntuneMAMSaveLocation 의 열거형 값입니다 IntuneMAMPolicy.h. 두 번째 인수는 위치를 소유하는 ID의 UPN입니다. 소유자를 알 nil 수 없는 경우 를 대신 사용할 수 있습니다.

지원되는 저장 위치

Intune MAM SDK는 에 IntuneMAMPolicy.h정의된 다음 저장 위치에 대한 지원을 제공합니다.

  • IntuneMAMSaveLocationOneDriveForBusiness- 이 위치는 비즈니스용 OneDrive 위치를 나타냅니다. OneDrive 계정과 연결된 ID는 두 번째 인수로 전달되어야 합니다.
  • IntuneMAMSaveLocationSharePoint- 이 위치는 SharePoint Online 및 Microsoft Entra 하이브리드 최신 인증 SharePoint 온-프레미스 위치를 모두 나타냅니다. SharePoint 계정과 연결된 ID는 두 번째 인수로 전달되어야 합니다.
  • IntuneMAMSaveLocationLocalDrive - 이 위치는 앱에서만 액세스할 수 있는 앱 샌드박스 스토리지를 나타냅니다. 이 위치는 파일 선택기를 통해 저장하거나 공유 확장자를 통해 파일에 저장하는 데 사용하면 됩니다. ID를 앱 샌드박스 스토리지와 연결할 수 있는 경우 두 번째 인수로 전달되어야 합니다. ID nil 가 없는 경우 를 대신 전달해야 합니다. 예를 들어 앱은 다른 계정에 대해 별도의 앱 샌드박스 스토리지 컨테이너를 사용할 수 있습니다. 이 경우 액세스 중인 컨테이너를 소유하는 계정을 두 번째 인수로 사용해야 합니다.
  • IntuneMAMSaveLocationCameraRoll - 이 위치는 iOS 사진 라이브러리를 나타냅니다. iOS 사진 라이브러리 nil 와 연결된 계정이 없으므로 이 위치를 사용할 때만 두 번째 인수로 전달되어야 합니다.
  • IntuneMAMSaveLocationAccountDocument- 이 위치는 관리되는 계정에 연결할 수 있는 이전에 나열되지 않은 모든 organization 위치를 나타냅니다. 위치와 연결된 organization 계정은 두 번째 인수로 전달되어야 합니다. 예를 들어 organization 계정에 연결된 organization LOB 클라우드 서비스에 사진을 업로드합니다.
  • IntuneMAMSaveLocationOther - 이 위치는 이전에 나열되지 않은 비조직적 위치 또는 알 수 없는 위치를 나타냅니다. 계정이 위치와 연결된 경우 두 번째 인수로 전달되어야 합니다. 그렇지 않으면 를 nil 대신 사용해야 합니다.
저장 위치에 대한 특별 고려 사항

위치는 IntuneMAMSaveLocationLocalDrive 앱에서만 액세스할 수 있는 앱 샌드박스 스토리지에만 사용해야 합니다. 파일 선택기 또는 파일 앱 IntuneMAMSaveLocationOther 에서 데이터에 액세스할 수 있는 다른 방법을 통해 iOS 디바이스 스토리지에 파일을 저장할 수 있는지 확인하려면 를 사용해야 합니다.

대상 위치가 나열되지 않은 경우 또는 IntuneMAMSaveLocationOtherIntuneMAMSaveLocationAccountDocument 사용해야 합니다. 위치에 관리되는 계정을 사용하여 액세스하는 조직 데이터가 포함된 경우(예: 조직 데이터를 저장하기 위한 LOB 클라우드 서비스) IntuneMAMSaveLocationAccountDocument 를 사용해야 합니다. 위치에 조직 데이터가 IntuneMAMSaveLocationOther 없는 경우 위치를 사용해야 합니다.

개방형 시나리오 처리

새 클라우드 스토리지 또는 로컬 위치에서 데이터를 가져오기 전에 앱은 IT 관리자가 데이터 전송을 허용했는지 확인하기 위해 API와 isOpenFromAllowedForLocation:withAccount: 검사 합니다. 이 메서드는 개체에서 IntuneMAMPolicy 호출됩니다. 현재 위치에서 열려 있는 데이터는 이 API로 확인할 필요가 없습니다.

참고

개체는 IntuneMAMPolicy 데이터를 수신하는 ID의 정책을 나타내야 합니다. 특정 ID의 IntuneMAMPolicy 개체를 얻으려면 의 policyForIdentity: 메서드를 호출IntuneMAMPolicyManager합니다. 받는 계정이 ID nil 가 없는 관리되지 않는 계정인 경우 에 policyForIdentity:전달할 수 있습니다. 수신되는 데이터가 조직 데이터가 isOpenFromAllowedForLocation:withAccount: 아니더라도 를 호출해야 합니다. 데이터를 소유한 계정에는 나가는 데이터 전송의 대상을 제한하는 정책이 여전히 있을 수 있습니다.

메서드는 isOpenFromAllowedForLocation:withAccount: 두 개의 인수를 사용합니다. 첫 번째 인수는 에 정의된 형식 IntuneMAMOpenLocation 의 열거형 값입니다 IntuneMAMPolicy.h. 두 번째 인수는 위치를 소유하는 ID의 UPN입니다. 소유자를 알 nil 수 없는 경우 를 대신 사용할 수 있습니다.

지원되는 열린 위치

Intune MAM SDK는 에 IntuneMAMPolicy.h정의된 다음 열린 위치에 대한 지원을 제공합니다.

  • IntuneMAMOpenLocationOneDriveForBusiness- 이 위치는 비즈니스용 OneDrive 위치를 나타냅니다. OneDrive 계정과 연결된 ID는 두 번째 인수로 전달되어야 합니다.
  • IntuneMAMOpenLocationSharePoint- 이 위치는 SharePoint Online 및 Microsoft Entra 하이브리드 최신 인증 SharePoint 온-프레미스 위치를 모두 나타냅니다. SharePoint 계정과 연결된 ID는 두 번째 인수로 전달되어야 합니다.
  • IntuneMAMOpenLocationCamera - 이 위치는 카메라에서 촬영한 새 이미지 나타냅니다. iOS 카메라 nil 와 연결된 계정이 없으므로 이 위치를 사용할 때만 두 번째 인수로 전달되어야 합니다. iOS 사진 라이브러리에서 데이터를 열려면 를 사용합니다 IntuneMAMOpenLocationPhotos.
  • IntuneMAMOpenLocationPhotos - 이 위치는 iOS 사진 라이브러리 내의 기존 이미지 나타냅니다. iOS 사진 라이브러리 nil 와 연결된 계정이 없으므로 이 위치를 사용할 때만 두 번째 인수로 전달되어야 합니다. iOS 카메라에서 직접 찍은 이미지를 여는 경우 를 사용합니다 IntuneMAMOpenLocationCamera.
  • IntuneMAMOpenLocationLocalStorage - 이 위치는 앱에서만 액세스할 수 있는 앱 샌드박스 스토리지를 나타냅니다. 이 위치는 파일 선택기에서 파일을 열거나 openURL에서 들어오는 파일을 처리하는 데 사용하면 됩니다. ID를 앱 샌드박스 스토리지와 연결할 수 있는 경우 두 번째 인수로 전달되어야 합니다. ID nil 가 없는 경우 를 대신 전달해야 합니다. 예를 들어 앱은 다른 계정에 대해 별도의 앱 샌드박스 스토리지 컨테이너를 사용할 수 있습니다. 이 경우 액세스 중인 컨테이너를 소유하는 계정을 두 번째 인수로 사용해야 합니다.
  • IntuneMAMOpenLocationAccountDocument- 이 위치는 관리되는 계정에 연결할 수 있는 이전에 나열되지 않은 모든 organization 위치를 나타냅니다. 위치와 연결된 organization 계정은 두 번째 인수로 전달되어야 합니다. 예를 들어 organization 계정에 연결된 organization LOB 클라우드 서비스에서 사진을 다운로드합니다.
  • IntuneMAMOpenLocationOther - 이 위치는 이전에 나열되지 않은 비정형 위치 또는 알 수 없는 위치를 나타냅니다. 계정이 위치와 연결된 경우 두 번째 인수로 전달되어야 합니다. 그렇지 않으면 를 nil 대신 사용해야 합니다.
열린 위치에 대한 특별 고려 사항

위치는 IntuneMAMOpenLocationLocalStorage 앱에서 액세스할 수 있는 앱 샌드박스 스토리지에만 사용해야 합니다. 파일 선택기를 통해 iOS 디바이스 스토리지에서 파일을 열 수 있는지 또는 파일 앱 IntuneMAMOpenLocationOther 에서 데이터에 액세스할 수 있는 다른 방법을 사용할 수 있는지 확인하려면 를 사용해야 합니다.

대상 위치가 나열되지 않은 경우 또는 IntuneMAMOpenLocationOtherIntuneMAMOpenLocationAccountDocument 사용해야 합니다. 위치에 관리되는 계정을 사용하여 액세스하는 조직 데이터가 포함된 경우 예를 들어 조직 데이터를 IntuneMAMOpenLocationAccountDocument 저장하기 위한 LOB 클라우드 서비스를 사용해야 합니다. 위치에 조직 데이터가 IntuneMAMSaveLocationOther 없는 경우 위치를 사용해야 합니다.

들어오는 NSItemProviders 및 파일 처리

공유 확장 IntuneMAMPolicy에서 받은 NSItemProviders를 처리하기 위해 의 canReceiveSharedItemProvider: 메서드를 대신 isOpenFromAllowedForLocation:withAccount:사용할 수 있습니다. 메서드는 canReceiveSharedItemProvider: NSItemProvider를 사용하고 IT 관리자가 개체의 계정에 열 IntuneMAMPolicy 수 있는지 여부를 반환합니다. 이 메서드를 호출하기 전에 항목을 로드해야 합니다. 예를 들어 를 호출 loadItemForTypeIdentifier:options:completionHandler합니다. 이 메서드는 NSItemProvider 로드 호출에 전달된 완료 처리기에서 호출할 수도 있습니다.

들어오는 파일을 IntuneMAMPolicy처리하기 위해 대신 의 canReceiveSharedFile: 메서드를 사용할 isOpenFromAllowedForLocation:withAccount:수 있습니다. 메서드는 canReceiveSharedFile: NSString 경로를 사용하고 IT 관리자가 개체의 계정에 열 IntuneMAMPolicy 수 있는지 여부를 반환합니다.

차단된 경고 공유

또는 isOpenFromAllowedForLocation:withAccount: API가 호출되고 저장/열기 작업을 차단하는 UI 도우미 함수를 찾을 때 isSaveToAllowedForLocation:withAccount: 사용할 수 있습니다. 앱이 사용자에게 작업이 차단되었음을 알리려는 경우 에 정의된 IntuneMAMUIHelper.h API를 showSharingBlockedMessage 호출하여 일반 메시지와 함께 경고 보기를 표시할 수 있습니다.

UIActivityViewController를 통해 데이터 공유

릴리스 8.0.2부터 Intune 앱 SDK는 Intune 관리되는 공유 위치만 선택할 수 있도록 작업을 필터링 UIActivityViewController 할 수 있습니다. 이 동작은 애플리케이션 데이터 전송 정책에 의해 제어됩니다.

'복사하기' 작업

및 를 UIActivityViewControllerUIDocumentInteractionController통해 문서를 공유할 때 iOS는 공유 중인 문서 열기를 지원하는 각 애플리케이션에 대한 '복사 대상' 작업을 표시합니다. 애플리케이션은 Info.plist의 CFBundleDocumentTypes 설정을 통해 지원하는 문서 형식을 선언합니다. 정책이 관리되지 않는 애플리케이션에 대한 공유를 금지하는 경우 이 유형의 공유는 더 이상 사용할 수 없습니다. 대신 사용자는 애플리케이션에 UI가 아닌 작업 확장을 추가하고 Intune 앱 SDK에 연결해야 합니다. 작업 확장은 스텁일 뿐입니다. SDK는 파일 공유 동작을 구현합니다. 아래 단계를 수행합니다.

  1. 애플리케이션에는 해당 항목과 -intunemam 함께 Info.plist CFBundleURLTypes 아래에 하나 이상의 schemeURL이 정의되어야 합니다. 예시:

    <key>CFBundleURLSchemes</key>
     <array>
     	<string>launch-com.contoso.myapp</string>
     	<string>launch-com.contoso.myapp-intunemam</string>
     </array>
    
  2. 애플리케이션 및 작업 확장은 둘 다 하나 이상의 앱 그룹을 공유해야 하며 앱 그룹은 앱의 배열과 확장의 IntuneMAMSettings 사전 아래에 AppGroupIdentifiers 나열되어야 합니다.

  3. 애플리케이션 및 작업 확장 모두 키 집합 공유 기능이 있어야 하며 키체인 그룹을 공유 com.microsoft.intune.mam 해야 합니다.

  4. 작업 확장명을 "열기"로 지정하고 애플리케이션 이름을 으로 지정합니다. 필요에 따라 Info.plist를 지역화합니다.

  5. Apple의 개발자 설명서에 설명된 대로 확장에 대한 템플릿 아이콘을 제공합니다. 또는 IntuneMAMConfigurator 도구를 사용하여 애플리케이션 .app 디렉터리에서 이러한 이미지를 생성할 수 있습니다. 이를 위해 실행할 작업:

    IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
    
  6. 확장의 Info.plist에 있는 IntuneMAMSettings에서 값이 YES인 부울 설정을 OpenInActionExtension 추가합니다.

  7. 애플리케이션의 NSExtensionActivationRuleCFBundleDocumentTypes 접두사로 된 단일 파일 및 모든 형식을 지원하도록 을 com.microsoft.intune.mam구성합니다. 예를 들어 애플리케이션이 public.text 및 public.image를 지원하는 경우 활성화 규칙은 다음과 같습니다.

    SUBQUERY (
        extensionItems,
        $extensionItem,
        SUBQUERY (
            $extensionItem.attachments,
            $attachment,
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.text" ||
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image").@count == 1
    ).@count == 1
    

기존 공유 및 작업 확장 업데이트

앱에 공유 또는 작업 확장 NSExtensionActivationRule 이 이미 포함되어 있는 경우 Intune 형식을 허용하도록 해당 확장을 수정해야 합니다. 확장에서 지원하는 각 형식에 대해 접두사로 추가 형식을 com.microsoft.intune.mam추가합니다. 예를 들어 기존 활성화 규칙이 인 경우:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data"
    ).@count > 0
).@count > 0

로 변경됩니다.

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.data"
    ).@count > 0
).@count > 0

참고

IntuneMAMConfigurator 도구를 사용하여 활성화 규칙에 Intune 형식을 추가할 수 있습니다. 기존 활성화 규칙이 미리 정의된 문자열 상수를 사용하는 경우 예를 들어 NSExtensionActivationSupportsFileWithMaxCount, NSExtensionActivationSupportsText 등은 조건자 구문이 매우 복잡해질 수 있습니다. IntuneMAMConfigurator 도구를 사용하여 Intune 형식을 추가하는 동안 활성화 규칙을 문자열 상수에서 조건자 문자열로 변환할 수도 있습니다.

UI의 모양

이전 UI:

데이터 공유 - iOS 이전 공유 UI

새 UI:

데이터 공유 - iOS 새 공유 UI

iOS 애플리케이션에 대해 대상 앱 구성 사용

MAM 대상 구성(MAM 앱 구성이라고도 함)을 사용하면 앱이 Intune SDK를 통해 구성 데이터를 받을 수 있습니다. 이 데이터의 형식과 변형은 앱 소유자/개발자가 Intune 고객에게 정의하고 전달해야 합니다.

Intune 관리자는 Microsoft Intune 관리 센터 및 Intune Graph API 통해 구성 데이터를 대상으로 지정하고 배포할 수 있습니다. iOS용 Intune 앱 SDK 버전 7.0.1을 기준으로 MAM 대상 구성에 참여하는 앱은 MAM 서비스를 통해 MAM 대상 구성 데이터를 제공할 수 있습니다. 애플리케이션 구성 데이터는 MAM 서비스를 통해 MDM 채널이 아닌 앱으로 직접 푸시됩니다. Intune 앱 SDK는 이러한 콘솔에서 검색된 데이터에 액세스하는 클래스를 제공합니다. 다음 항목은 필수 구성 요소입니다.

  • MAM 대상 구성 UI에 액세스하려면 Intune MAM 서비스에 앱을 등록해야 합니다. 자세한 내용은 앱 보호 정책 받기를 참조하세요.

  • 앱의 원본 파일에 포함합니다 IntuneMAMAppConfigManager.h .

  • 를 호출 [[IntuneMAMAppConfigManager instance] appConfigForIdentity:] 하여 App Config 개체를 가져옵니다.

  • 개체에서 적절한 선택기를 IntuneMAMAppConfig 호출합니다. 예를 들어 애플리케이션의 키가 문자열인 경우 또는 allStringsForKey를 사용 stringValueForKey 하려고 합니다. 반환 값 및 오류 조건에 대한 자세한 설명은 를 참조 IntuneMAMAppConfig.h 하세요.

Graph API 기능에 대한 자세한 내용은 Graph API 참조를 참조하세요.

iOS에서 MAM 대상 앱 구성 정책을 만드는 방법에 대한 자세한 내용은 iOS/iPadOS에 Microsoft Intune 앱 구성 정책을 사용하는 방법의 MAM 대상 앱 구성 섹션을 참조하세요.

원격 분석

기본적으로 iOS용 Intune 앱 SDK는 다음 유형의 이벤트에 대한 원격 분석을 수집합니다.

  • 앱 시작: Microsoft Intune 관리 유형별 MAM 사용(MDM이 있는 MAM, MDM 등록이 없는 MAM 등)에 대해 알아보는 데 도움이 됩니다.

  • 등록 호출: Microsoft Intune 클라이언트 쪽에서 시작된 등록 호출의 성공률 및 기타 성능 메트릭에 대해 알아보는 데 도움이 됩니다.

  • Intune 작업: 문제를 진단하고 Intune 기능을 보장하기 위해 Intune SDK 작업에 대한 정보를 수집합니다.

참고

모바일 애플리케이션에서 Microsoft Intune Intune 앱 SDK 원격 분석 데이터를 보내지 않도록 선택하는 경우 앱 SDK 원격 분석 캡처를 Intune 사용하지 않도록 설정해야 합니다. IntuneMAMSettings 사전에서 속성을 MAMTelemetryDisabled YES로 설정합니다.

Siri 의도

앱이 Siri 의도와 통합되거나 Siri 의도 기부를 하는 경우 이 시나리오를 지원하는 방법에 대한 지침은 에 IntuneMAMPolicy.h 대한 areSiriIntentsAllowed 설명을 읽어보세요.

참고

iOS 16 이상에서는 새 앱 의도 시스템 프레임워크를 사용하여 Swift 앱 의도를 만들 수 있습니다. 앱 의도를 구현하는 앱은 먼저 사용자의 IntuneMAMPolicy 개체에서 속성을 검사 areSiriIntentsAllowed 합니다.

앱 클립

앱에 앱 클립 대상이 포함된 경우 앱 클립에 관리되는 데이터가 표시되지 않는지 확인해야 합니다. 앱 클립은 관리되지 않는 위치로 간주되어야 합니다. App Clips에 대한 SDK 통합은 현재 지원되지 않습니다.

인쇄

앱이 인쇄를 구현하고 사용자 지정 메뉴에서 사용자 지정 인쇄 작업을 제공하는 경우 를 활용하여 UIPrintInteractionController.isPrintingAvailable() 사용자 지정 메뉴에 인쇄 작업을 추가해야 하는지 여부를 결정해야 합니다.

알림

앱이 알림을 수신하는 경우 이 시나리오를 지원하는 방법에 대한 지침은 에 IntuneMAMPolicy.h 대한 notificationPolicy 설명을 읽어보세요. 앱은 에 IntuneMAMPolicyManager.h설명된 에 IntuneMAMPolicyDidChangeNotification 등록하고 키체인 통해 해당 값과 통신하는 UNNotificationServiceExtension 것이 좋습니다.

Safari 웹 확장

앱에 Safari 웹 확장이 있고 확장과 부모 애플리케이션 간에 데이터 전송을 지원하는 경우 일부 시나리오에서는 애플리케이션이 데이터 차단을 지원해야 할 수 있습니다. 데이터를 차단하려면 부모 애플리케이션에서 에서 IntuneMAMPolicy.hAPI를 isAppSharingAllowed 호출한 다음 웹 확장을 차단합니다.

빌드 후 스크립트

IntuneMAMFrameworkPatcher 명령줄 도구는 더 이상 애플리케이션 빌드 프로세스의 마지막 단계로 실행되지 않아야 합니다. 그러나 이 도구는 GitHub의 iOS용 Intune 앱 SDK의 일부로 사용할 수 있습니다.

중요

Intune MAM SDK의 17.7.1 릴리스를 기준으로 이 단계는 더 이상 필요하지 않습니다. IntuneMAMFrameworkPatcher 명령줄 도구는 더 이상 실행되지 않아야 합니다.

명령줄 사용

IntuneMAMFrameworkPatcher -i /path/to/directory_or_binary [-resign] [-verbose]

매개 변수:

  • i, r, v: 이 매개 변수를 사용하면 애플리케이션 빌드 프로세스에 대한 Intune MAM Framework Patcher를 설치, 제거 또는 확인할 수 있습니다.
  • path: 는 path 애플리케이션의 .app 디렉터리의 루트여야 합니다.
  • resign: 옵션은 이 resign 진 파일을 패치하기 전에 유효한 서명이 있는 이진 파일을 사임하도록 도구에 지시합니다. 이 옵션은 프로젝트에 포함 및 서명 옵션이 포함된 프레임워크 종속성 또는 플러그 인이 포함되어 있거나, 최종 애플리케이션 서명 전에 실행되거나, 최종 애플리케이션 서명 후에 도구가 실행되는 경우에도 사용해야 합니다.
  • verbose: 옵션을 verbose 사용하면 도구가 패치된 각 이진 파일에 대한 정보를 출력합니다.

기타 사용법:

  • 패치를 제거합니다.

    IntuneMAMFrameworkPatcher -r /path/to/directory_or_binary [-resign] [-verbose]

  • 패치를 확인합니다.

    IntuneMAMFrameworkPatcher -v /path/to/directory_or_binary [-verbose]

예제 스크립트:

IntuneMAMFrameworkPatcher -i $BUILT_PRODUCTS_DIR/$EXECUTABLE_FOLDER_PATH -resign -verbose

SDK를 시작하고 다운로드하는 방법에 대한 자세한 내용은 Microsoft Intune 앱 SDK 시작을 참조하세요.

종료 조건

제한 사항에서 /open에 저장 유효성 검사

다른 이름으로 저장 및 열기 컨트롤을 구현하지 않은 경우 건너뜁니다.

앱이 클라우드 스토리지 또는 로컬 위치에 데이터를 저장하고 클라우드 스토리지 또는 로컬 위치에서 데이터를 열 수 있는 모든 시나리오를 다시 분류합니다.

간단히 하기 위해 이러한 테스트는 앱 내의 단일 위치에서 비즈니스용 OneDrive 데이터를 저장하고 여는 지원만 앱에 포함되어 있다고 가정합니다. 그러나 모든 조합의 유효성을 검사해야 합니다. 앱에서 데이터를 저장할 수 있는 모든 위치에 대해 지원되는 모든 저장 위치와 앱에서 데이터를 열 수 있는 모든 위치에 대해 지원되는 모든 열린 위치.

이러한 테스트의 경우 테스트를 시작하기 전에 앱을 설치하고, SDK와 통합하고, 관리되는 계정으로 로그인합니다.

또한

  • 관리되는 계정의 정책을 다음과 같이 설정합니다.
    • "조직 데이터를 다른 앱으로 보내기"를 "정책 관리 앱"으로 보냅니다.
    • "다른 앱에서 데이터 받기"에서 "정책 관리 앱"으로.
시나리오 전제 조건 단계
에 저장, 완전히 허용됨 "조직 데이터 복사본 저장" 정책이 "허용"으로 설정됩니다. - 앱이 데이터를 저장할 수 있는 위치로 이동하여 비즈니스용 OneDrive.
- 앱에 로그인한 것과 동일한 관리 계정에 비즈니스용 OneDrive 문서를 저장하려고 시도합니다.
- 저장이 허용되는지 확인합니다.
에 저장, 제외됨 - "조직 데이터 복사본 저장" 정책이 "차단"으로 설정됩니다.
- "사용자가 선택한 서비스에 복사본을 저장할 수 있도록 허용" 정책이 "비즈니스용 OneDrive"으로만 설정됨
- 앱이 데이터를 저장할 수 있는 위치로 이동하여 비즈니스용 OneDrive.
- 앱에 로그인한 것과 동일한 관리 계정에 비즈니스용 OneDrive 문서를 저장하려고 시도합니다.
- 저장이 허용되는지 확인합니다.
- 앱이 허용하는 경우 파일을 다른 클라우드 스토리지 위치에 저장하고 차단되었는지 확인합니다.
에 저장, 차단됨 "조직 데이터 복사본 저장" 정책이 "차단"으로 설정되었습니다. - 앱이 데이터를 저장할 수 있는 위치로 이동하여 비즈니스용 OneDrive.
- 앱에 로그인한 것과 동일한 관리 계정에 비즈니스용 OneDrive 문서를 저장하려고 시도합니다.
- 저장이 차단되어 있는지 확인합니다.
- 앱이 허용하는 경우 파일을 다른 클라우드 스토리지 위치에 저장하고 차단되었는지 확인합니다.
에서 열기, 완전히 허용됨 "조직 문서에 데이터 열기" 정책이 "허용"으로 설정됩니다. - 앱이 비즈니스용 OneDrive 데이터를 열 수 있는 위치로 이동합니다.
- 앱의 스토리지에 로그인한 동일한 관리 계정에서 비즈니스용 OneDrive 문서를 열려고 시도합니다.
- 열기가 허용되는지 확인합니다.
에서 열기, 제외됨 - "조직 문서에 데이터 열기" 정책이 "차단"으로 설정
- "사용자가 선택한 서비스에서 데이터를 열 수 있도록 허용" 정책이 "비즈니스용 OneDrive"로만 설정됨
- 앱이 비즈니스용 OneDrive 데이터를 열 수 있는 위치로 이동합니다.
- 앱의 스토리지에 로그인한 동일한 관리 계정에서 비즈니스용 OneDrive 문서를 열려고 시도합니다.
- 열기가 허용되는지 확인합니다.
- 앱이 허용하는 경우 다른 클라우드 스토리지 위치에서 다른 파일을 열고 차단되었는지 확인합니다.
에서 열기, 차단됨 "조직 문서에 데이터 열기" 정책이 "차단"으로 설정되었습니다. - 앱이 비즈니스용 OneDrive 데이터를 열 수 있는 위치로 이동합니다.
- 앱의 스토리지에 로그인한 동일한 관리 계정에서 비즈니스용 OneDrive 문서를 열려고 시도합니다.
- 열기가 차단되어 있는지 확인합니다.
- 앱이 허용하는 경우 다른 클라우드 스토리지 위치에서 다른 파일을 열고 차단되었는지 확인합니다.

"복사" 작업의 유효성 검사

'복사하기' 작업을 구현하지 않은 경우 건너뜁니다.

간단히 하기 위해 이러한 테스트는 앱에 Microsoft Word, Excel 등과 같은 Microsoft Office 애플리케이션에 데이터를 복사하는 지원만 포함된다고 가정합니다. 그러나 모든 조합의 유효성을 검사해야 합니다. 앱에서 데이터를 복사할 수 있는 모든 위치에 대해 지원되는 모든 복사 위치입니다.

이러한 테스트의 경우 테스트를 시작하기 전에 앱을 설치하고, SDK와 통합하고, 관리되는 계정으로 로그인합니다.

또한

  • Microsoft Word 대한 작업 확장을 사용하여 '복사 대상' 작업의 모든 통합 단계를 완료하고 앱을 성공적으로 빌드하고 실행합니다.
  • 관리되는 계정의 정책을 다음과 같이 설정합니다.
    • "조직 데이터를 다른 앱으로 보내기"를 "정책 관리 앱"으로 보냅니다.
시나리오 전제 조건 단계
제외할 앱 선택, 없음 "다른 앱으로 조직 데이터 보내기" 정책이 "정책 관리 앱"으로 설정됩니다. - 앱이 Microsoft Word 데이터를 복사할 수 있는 위치로 이동하고 해당 데이터에 대한 공유 옵션을 시작합니다.
- "Word 복사"를 옵션으로 보는 대신 "Word 열기"를 볼 수 있습니다.
- "Word 열기"를 누르고 동일한 관리 계정으로 로그인된 Word 문서가 복사되고 성공적으로 표시되었는지 확인합니다.

인쇄 작업의 유효성 검사

인쇄를 구현하지 않은 경우 건너뜁 니다.

이 테스트의 경우 테스트를 시작하기 전에 앱을 설치하고, SDK와 통합하고, 관리되는 계정으로 로그인합니다.

또한

  • 앱을 인쇄 및 빌드 및 실행에서 모든 통합 단계를 완료했습니다.
  • 앱은 APP IT 관리자로부터 인쇄가 허용되지 않는 경우 해당 사례를 처리하기 위해 경고/작업 항목을 이미 구현합니다. 이 테스트에서는 인쇄가 차단될 때 앱이 최종 사용자에게 경고를 표시할 것이라고 가정합니다.
시나리오 단계
조직 데이터 인쇄, 차단 - 앱에서 데이터를 보고 해당 데이터에 대한 공유 옵션을 시작할 수 있는 위치로 이동합니다.
- "인쇄"를 누릅니다.
- 블록 경고가 나타나고 인쇄가 허용되지 않는지 확인합니다.
조직 데이터 인쇄, 허용 - 앱에서 데이터를 보고 해당 데이터에 대한 공유 옵션을 시작할 수 있는 위치로 이동합니다.
- "인쇄"를 누릅니다.
- "인쇄" 보기가 나타나고 프린터를 선택하고 작업을 성공적으로 완료할 수 있는지 확인합니다.

앱 구성 수신 유효성 검사

iOS 애플리케이션에 대해 대상 앱 구성을 사용하도록 설정하지 않은 경우 건너뜁니다.

Intune 앱에 앱 구성 정책 값을 전달하는 역할을 담당합니다. 그 후 앱은 해당 값을 사용하여 앱 내에서 동작 또는 UI를 변경합니다. 철저한 엔드 투 엔드 테스트는 두 구성 요소를 모두 포함해야 합니다.

Intune 앱 구성 정책을 올바르게 제공하고 있는지 확인하려면 다음을 수행합니다.

  1. 앱을 대상으로 하고 테스트 계정에 배포되는 앱 구성 정책을 구성합니다.
  2. 테스트 계정으로 앱에 로그인합니다.
  3. 앱을 탐색하여 를 appConfigForIdentity호출IntuneMAMAppConfigManager하는 각 코드 경로를 실행합니다.
    • 호출 결과를 로깅하는 appConfigForIdentity 것은 전달되는 설정의 유효성을 검사하는 간단한 방법입니다. 그러나 관리자는 앱 구성 설정에 대한 데이터를 입력할 수 있으므로 개인 사용자 데이터를 기록하지 않도록 주의해야 합니다.
  4. 적용된 앱 구성 정책 유효성 검사를 참조하세요.

앱 구성은 앱별로 달라지므로 앱이 각 앱 구성 설정에 대한 동작 또는 UI를 변경하는 방법을 확인하는 방법만 알고 있습니다.

테스트할 때 다음을 고려합니다.

  • 앱이 지원하는 모든 값을 사용하여 다양한 테스트 앱 구성 정책을 만들어 모든 시나리오를 다룹니다.
  • 각 설정에 대해 서로 다른 값을 사용하여 여러 테스트 앱 구성 정책을 만들어 앱의 충돌 해결 논리의 유효성을 검사합니다.

다음 단계

이 가이드를 순서대로 따르고 위의 모든 종료 기준을 완료한 경우 축하합니다. 이제 앱이 Intune 앱 SDK와 완전히 통합되어 앱 보호 정책을 적용할 수 있습니다. 5단계: 다중 ID, 6단계: 앱 보호 조건부 액세스 지원7단계: 웹 보기 기능과 같은 다른 중요한 앱 참여 기능을 검사 앱에 통합하세요.

앱 보호 이제 앱의 핵심 시나리오입니다. 앱을 계속 개발할 때 이 가이드와 부록 을 계속 참조하세요.