iOS용 Microsoft Intune 앱 SDK를 사용하면 Intune 앱 보호 정책(APP 또는 MAM 정책이라고도 함)을 기본 iOS 앱에 통합할 수 있습니다. Intune 관리 애플리케이션은 Intune 앱 SDK와 통합된 애플리케이션입니다. Intune 관리자는 Intune에서 앱을 적극적으로 관리할 때 Intune 관리 앱에 앱 보호 정책을 쉽게 배포할 수 있습니다.
참고
이 가이드는 여러 단계로 나뉩니다. 먼저 통합 계획을 검토합니다.
4단계: 앱 참여 기능
스테이지 목표
- Intune 앱 SDK에서 제공하는 다양한 앱 참여 기능에 대해 알아봅니다.
- 앱 및 사용자와 관련된 앱 참여 기능을 통합합니다.
- 이러한 기능의 통합을 테스트합니다.
"앱 참여 기능"이란?
이 SDK 통합 프로세스는 개발자가 작성해야 하는 앱별 코드의 양을 최소화하려고 시도합니다. SDK 통합의 이전 단계를 성공적으로 완료하면 이제 앱에서 파일 암호화, 복사/붙여넣기 제한, 스크린샷 차단 및 데이터 전송 제한과 같은 대부분의 앱 보호 정책 설정을 적용할 수 있습니다.
그러나 앱별 코드를 적절하게 적용해야 하는 몇 가지 설정이 있습니다. 이를 앱 참여 기능이라고 합니다. 일반적으로 SDK에는 이러한 설정을 자동으로 적용하기 위한 애플리케이션 코드 또는 최종 사용자 시나리오에 대한 컨텍스트가 충분하지 않으므로 개발자가 SDK API를 적절하게 호출해야 합니다.
앱 참여 기능이 반드시 선택 사항은 아닙니다. 앱의 기존 기능에 따라 이러한 기능이 필요할 수 있습니다.
이 가이드의 다음 단계에서는 몇 가지 중요한 앱 참여 기능에 대해 설명합니다.
- 5단계: 다중 ID에 나와 있는 다중 ID.
- 6단계: 앱 보호 조건부 액세스 지원에서 다루는 앱 보호 CA
- 7단계에서 다루는 웹 보기 특정 기능 : 웹 보기 기능
이 가이드의 나머지 부분에서는 나머지 앱 참여 기능 집합에 대해 설명합니다.
- 허용된 계정 구현
- 파일 암호화 구현 필요
- 다른 이름으로 저장 및 열기 컨트롤 구현
- UIActivityViewController를 통해 데이터 공유
- iOS 애플리케이션에 대상 구성(APP/MAM 앱 구성) 사용
- 원격 분석
- Siri 의도
- 앱 클립
- 인쇄
- 알림
- 빌드 후 스크립트
API를 사용하여 앱의 동작 사용자 지정
Intune 앱 SDK에는 앱에 배포된 Intune 앱 보호 정책에 대한 정보를 얻기 위해 호출할 수 있는 몇 가지 Intune API가 있습니다. 이 데이터를 사용하여 앱의 동작을 사용자 지정할 수 있습니다. 다음 표에서는 사용하는 몇 가지 필수 Intune 클래스에 대한 정보를 제공합니다.
| 클래스 | 설명 |
|---|---|
| IntuneMAMPolicyManager.h | IntuneMAMPolicyManager 클래스는 애플리케이션에 배포된 Intune 앱 보호 정책을 노출합니다. 특히 다중 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에서 허용된 계정의 지정된 목록을 쿼리한 다음 허용된 계정만 장치에 로그인되도록 할 수 있습니다.
허용된 계정을 쿼리하려면 검사 allowedAccountsIntuneMAMEnrollmentManager앱에서 . 이 속성은 allowedAccounts 허용되는 계정을 포함하는 배열이거나 nil입니다. 속성이 nil이면 허용된 계정이 지정되지 않은 것입니다. MSAL/OneAuth 지원 애플리케이션은 instance의 IntuneMAMEnrollmentManager 속성을 사용하여 allowedAccountIds Entra 개체 ID를 쿼리해야 합니다.
앱은 알림을 관찰하여 속성 변경 allowedAccounts 에 반응할 수도 있습니다 IntuneMAMAllowedAccountsDidChangeNotification . 알림은 속성 값이 변경될 때마다 allowedAccounts 게시됩니다.
허용된 계정에 API를 사용할 때 다음 요구 사항이 필요합니다.
- ID 비교는 UPN 및 OID에 대해 대/소문자를 구분하지 않아야 합니다.
- ID 비교는 UPN 및 OID를 모두 지원해야 합니다.
- 애플리케이션에 관리자가 지정한 계정과 사용자가 입력한 계정 간의 불일치를 진단할 수 있는 로깅이 있어야 합니다.
파일 암호화 구현 필요
정의된 API는 isFileEncryptionRequiredIntuneMAMPolicy.h IT 관리자가 애플리케이션이 디스크에 저장된 모든 파일에서 Intune 암호화를 사용하도록 요구하는 경우 애플리케이션에 알립니다. true이면 isFileEncryptionRequired 앱에서 디스크에 저장한 모든 파일이 , IntuneMAMFileProtectionManager.h, 및 IntuneMAMFDataProtectionManager.h의 API를 사용하여 암호화되도록 하는 것은 앱의 책임입니다.IntuneMAMFile.h
앱은 에 정의된 IntuneMAMFDataProtectionManager.h알림을 관찰 IntuneMAMDataProtectionDidChangeNotification 하여 이 정책의 변경 사항에 대응할 수 있습니다.
다른 이름으로 저장 및 열기 컨트롤 구현
Intune을 사용하면 IT 관리자가 관리되는 앱에서 데이터를 저장하거나 데이터를 열 수 있는 저장소 위치를 선택할 수 있습니다. 앱은 에 정의된 IntuneMAMPolicy.hAPI를 사용하여 isSaveToAllowedForLocation:withAccountId: 허용된 저장 저장소 위치에 대해 Intune MAM SDK를 쿼리할 수 있습니다. 앱은 또한 에 정의된 IntuneMAMPolicy.hAPI를 사용하여 isOpenFromAllowedForLocation:withAccountId: 허용된 열기 스토리지 위치에 대해 SDK를 쿼리할 수도 있습니다.
또한 앱은 에 정의된 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 앱을 개발하는 경우 'sprimaryUser를IntuneMAMPolicy사용하여 관리nil되는 경우 현재 계정을 참조하고 관리되지 않는 경우 현재 계정을 참조합니다.
저장 위치 시나리오 처리
데이터를 새 클라우드 저장소 또는 로컬 위치로 이동하기 전에 앱은 API를 통해 isSaveToAllowedForLocation:withAccountId: IT 관리자가 데이터 전송을 허용했는지 여부를 검사해야 합니다. 이 메서드는 개체에서 호출됩니다 IntuneMAMPolicy . 현재 위치에서 편집 및 저장되는 데이터는 이 API를 사용하여 확인할 필요가 없습니다.
참고
개체는 IntuneMAMPolicy 저장되는 데이터 소유자의 정책을 나타내야 합니다. 특정 ID의 개체를 가져오 IntuneMAMPolicy 려면 의 메서드를 policyForAccountId: 호출IntuneMAMPolicyManager합니다. 소유자가 ID nil 가 없는 관리되지 않는 계정인 경우 전달할 수 있습니다.policyForAccountId: 저장되는 데이터가 조직 데이터가 isSaveToAllowedForLocation:withAccountId: 아니더라도 계속 호출해야 합니다. 대상 위치를 소유한 계정에는 들어오는 관리되지 않는 데이터를 제한하는 정책이 여전히 있을 수 있습니다.
메서드는 isSaveToAllowedForLocation:withAccountId: 두 개의 인수를 사용합니다. 첫 번째 인수는 에 정의된 IntuneMAMPolicy.h형식 IntuneMAMSaveLocation 의 열거형 값입니다. 두 번째 인수는 위치를 소유하는 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 위치는 앱에서만 액세스할 수 있는 앱 샌드박스 저장소에만 사용해야 합니다. 파일 선택기 또는 Files 앱에서 데이터에 액세스할 수 있는 다른 방법을 통해 파일을 iOS 장치 저장소에 저장할 수 있는지 확인하는 데 사용해야 합니다. IntuneMAMSaveLocationOther
대상 위치가 목록에 없으면 둘 중 하나 IntuneMAMSaveLocationAccountDocument 이거나 IntuneMAMSaveLocationOther 사용해야 합니다. 위치에 관리 계정(예: 조직 데이터를 저장하기 위한 LOB 클라우드 서비스)를 IntuneMAMSaveLocationAccountDocument 사용해야 합니다. 위치에 조직 데이터가 포함되어 있지 않은 경우 위치를 IntuneMAMSaveLocationOther 사용해야 합니다.
열기 시나리오 처리
새 클라우드 저장소 또는 로컬 위치에서 데이터를 가져오기 전에 앱에서 API를 isOpenFromAllowedForLocation:withAccountId: 검사하여 IT 관리자가 데이터 전송을 허용했는지 확인해야 합니다. 이 메서드는 개체에서 호출됩니다 IntuneMAMPolicy . 현재 위치에서 열리는 데이터는 이 API를 사용하여 확인할 필요가 없습니다.
참고
개체는 IntuneMAMPolicy 데이터를 수신하는 ID의 정책을 나타내야 합니다. 특정 ID의 개체를 가져오 IntuneMAMPolicy 려면 의 메서드를 policyForAccountId: 호출IntuneMAMPolicyManager합니다. 받는 계정이 ID nil 가 없는 관리되지 않는 계정인 경우 다음으로 전달할 수 있습니다.policyForAccountId: 수신하는 데이터가 조직 데이터가 isOpenFromAllowedForLocation:withAccountId: 아니더라도 여전히 호출해야 합니다. 데이터를 소유한 계정에는 발신 데이터 전송의 대상을 제한하는 정책이 여전히 있을 수 있습니다.
메서드는 isOpenFromAllowedForLocation:withAccountId: 두 개의 인수를 사용합니다. 첫 번째 인수는 에 정의된 IntuneMAMPolicy.h형식 IntuneMAMOpenLocation 의 열거형 값입니다. 두 번째 인수는 위치를 소유하는 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 계정에 연결된 조직의 LOB 클라우드 서비스에서 organization 사진을 다운로드합니다. -
IntuneMAMOpenLocationOther- 이 위치는 이전에 나열되지 않은 비조직 위치 또는 알 수 없는 위치를 나타냅니다. 계정이 위치와 연결된 경우 두 번째 인수로 전달되어야 합니다. 그렇지 않은 경우,nil를 대신 사용해야 합니다.
열린 위치에 대한 특별 고려 사항
이 IntuneMAMOpenLocationLocalStorage 위치는 앱에서 액세스할 수 있는 앱 샌드박스 저장소에만 사용해야 합니다. 파일 선택기 또는 Files 앱에서도 데이터에 액세스할 수 있는 다른 방법을 통해 iOS 기기 저장소에서 파일을 열 수 있는지 확인하려면 사용해야 합니다. IntuneMAMOpenLocationOther
대상 위치가 목록에 없으면 둘 중 하나 IntuneMAMOpenLocationAccountDocument 이거나 IntuneMAMOpenLocationOther 사용해야 합니다. 위치에 관리 계정을 사용하여 액세스하는 조직 데이터가 포함된 경우. 예를 들어 조직 데이터를 IntuneMAMOpenLocationAccountDocument 저장하기 위한 LOB 클라우드 서비스를 사용해야 합니다. 위치에 조직 데이터가 포함되어 있지 않은 경우 위치를 IntuneMAMSaveLocationOther 사용해야 합니다.
들어오는 NSItemProviders 및 Files 처리
공유 확장 IntuneMAMPolicy에서 받은 NSItemProviders를 처리하려면 대신 의 canReceiveSharedItemProvider: 메서드를 사용할 수 있습니다 isOpenFromAllowedForLocation:withAccountId:. 이 메서드는 canReceiveSharedItemProvider: NSItemProvider를 사용하고 IT 관리자가 개체의 계정으로 IntuneMAMPolicy 열 수 있는지 여부를 반환합니다. 이 메서드를 호출하기 전에 항목을 로드해야 합니다. 예를 들어 loadItemForTypeIdentifier:options:completionHandler. 이 메서드는 NSItemProvider 로드 호출에 전달된 완료 처리기에서 호출할 수도 있습니다.
들어오는 파일을 IntuneMAMPolicy처리하려면 . 대신 's canReceiveSharedFile: 메서드를 사용할 isOpenFromAllowedForLocation:withAccountId:수 있습니다. 이 canReceiveSharedFile: 메서드는 NSString 경로를 사용하고 IT 관리자가 개체의 계정으로 IntuneMAMPolicy 열 수 있도록 허용했는지 여부를 반환합니다.
공유 차단된 경고
UI 도우미 함수는 또는 isOpenFromAllowedForLocation:withAccountId: API가 isSaveToAllowedForLocation:withAccountId: 호출되어 저장/열기 작업을 차단하는 경우 사용될 수 있습니다. 앱이 사용자에게 작업이 차단되었음을 알리려는 경우 정의된 IntuneMAMUIHelper.h API를 showSharingBlockedMessage 호출하여 일반 메시지와 함께 경고 보기를 표시할 수 있습니다.
UIActivityViewController를 통해 데이터 공유
릴리스 8.0.2부터 Intune 앱 SDK는 Intune 관리 공유 위치만 선택할 수 있도록 작업을 필터링 UIActivityViewController 할 수 있습니다. 이 동작은 응용 프로그램 데이터 전송 정책에 의해 제어됩니다.
'복사 대상' 작업
and UIDocumentInteractionController를 통해 UIActivityViewController 문서를 공유할 때 iOS는 공유 중인 문서 열기를 지원하는 각 애플리케이션에 대해 '복사 대상' 작업을 표시합니다. 애플리케이션은 Info.plist의 설정을 통해 CFBundleDocumentTypes 지원하는 문서 형식을 선언합니다. 정책에서 관리되지 않는 응용 프로그램에 대한 공유를 금지하는 경우 이러한 유형의 공유를 더 이상 사용할 수 없습니다. 대신 사용자는 UI가 아닌 동작 확장을 애플리케이션에 추가하고 이를 Intune 앱 SDK에 연결해야 합니다. 작업 확장은 스텁일 뿐입니다. SDK는 파일 공유 동작을 구현합니다. 아래 단계를 따르세요.
애플리케이션에는 해당하는 항목과
-intunemam함께 Info.plistCFBundleURLTypes아래에 하나 이상의 schemeURL이 정의되어 있어야 합니다. 예시:<key>CFBundleURLSchemes</key> <array> <string>launch-com.contoso.myapp</string> <string>launch-com.contoso.myapp-intunemam</string> </array>애플리케이션과 작업 확장은 모두 하나 이상의 앱 그룹을 공유해야 하며, 앱 그룹은 앱과 확장의 IntuneMAMSettings 사전 아래의 배열 아래에
AppGroupIdentifiers나열되어야 합니다.애플리케이션과 작업 확장 모두 키 집합 공유 기능이 있어야 하며 키 집합 그룹을 공유해야
com.microsoft.intune.mam합니다.작업 확장명 이름을 "Open in" 뒤에 애플리케이션 이름을 지정합니다. 필요에 따라 Info.plist를 지역화합니다.
Apple의 개발자 설명서에 설명된 대로 확장에 대한 템플릿 아이콘을 제공합니다. 또는 IntuneMAMConfigurator 도구를 사용하여 응용 프로그램 .app 디렉터리에서 이러한 이미지를 생성할 수 있습니다. 이를 위해 실행할 작업:
IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory확장의 Info.plist에 있는 IntuneMAMSettings에서 YES 값으로 명명된
OpenInActionExtension부울 설정을 추가합니다.단일 파일과 접두사가 붙은
com.microsoft.intune.mam애플리케이션의CFBundleDocumentTypes모든 유형을 지원하도록 구성합니다NSExtensionActivationRule. 예를 들어 응용 프로그램이 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:
새로운 UI:
iOS 애플리케이션에 대상 앱 구성 사용
MAM 대상 구성(MAM 앱 구성이라고도 함)을 사용하면 앱이 Intune SDK를 통해 구성 데이터를 받을 수 있습니다. 이 데이터의 형식과 변형은 앱 소유자/개발자가 정의하고 Intune 고객에게 전달해야 합니다.
Intune 관리자는 Microsoft Intune 관리 센터 및 Intune Graph API를 통해 구성 데이터를 대상으로 지정하고 배포할 수 있습니다. iOS용 Intune 앱 SDK 버전 7.0.1부터 MAM 대상 구성에 참여하는 앱에 MAM 서비스를 통해 MAM 대상 구성 데이터를 제공할 수 있습니다. 애플리케이션 구성 데이터는 MDM 채널 대신 MAM 서비스를 통해 앱으로 직접 푸시됩니다. Intune 앱 SDK는 이러한 콘솔에서 검색된 데이터에 액세스하는 클래스를 제공합니다. 다음 항목은 필수 구성 요소입니다.
MAM 대상 구성 UI에 액세스하기 전에 앱을 Intune MAM 서비스에 등록해야 합니다. 자세한 내용은 앱 보호 정책 받기를 참조하세요.
앱의 소스 파일에 포함
IntuneMAMAppConfigManager.h합니다.앱 구성 개체를 가져오는 호출
[[IntuneMAMAppConfigManager instance] appConfigForAccountId:]입니다.개체에서
IntuneMAMAppConfig적절한 선택기를 호출합니다. 예를 들어 애플리케이션의 키가 문자열인 경우 OR 를allStringsForKey사용하고stringValueForKey있습니다. 반환 값 및 오류 조건에 대한 자세한 설명은 참조하세요IntuneMAMAppConfig.h.
Graph API의 기능에 대한 자세한 내용은 Graph API 참조를 참조하세요.
iOS에서 MAM 대상 앱 구성 정책을 만드는 방법에 대한 자세한 내용은 iOS/iPadOS용 Microsoft Intune 앱 구성 정책을 사용하는 방법의 MAM 대상 앱 구성 섹션을 참조하세요.
원격 분석
기본적으로 iOS용 Intune 앱 SDK는 다음 유형의 이벤트에 대한 원격 분석을 수집합니다.
앱 시작: Microsoft Intune에서 관리 유형별(MDM이 있는 MAM, MDM 등록이 없는 MAM 등) MAM 지원 앱 사용에 대해 알아볼 수 있도록 지원합니다.
등록 호출: Microsoft Intune이 클라이언트 쪽에서 시작된 등록 호출의 성공률 및 기타 성능 메트릭을 알 수 있도록 지원합니다.
Intune 작업: 문제를 진단하고 Intune 기능을 보장하기 위해 Intune SDK 작업에 대한 정보를 수집합니다.
참고
모바일 애플리케이션에서 Intune 앱 SDK 원격 분석 데이터를 Microsoft Intune으로 보내지 않도록 선택하는 경우 Intune 앱 SDK 원격 분석 캡처를 사용하지 않도록 설정해야 합니다. IntuneMAMSettings 사전에서 속성을 MAMTelemetryDisabled YES로 설정합니다.
Siri 의도
앱이 Siri 의도와 통합되거나 Siri 의도 기부를 수행하는 경우 이 areSiriIntentsAllowed 시나리오를 지원하는 지침은 의 설명 IntuneMAMPolicy.h 을 읽으세요.
참고
iOS 16 이상에서는 새로운 앱 의도 시스템 프레임워크를 사용하여 Swift 앱 의도를 생성할 수 있습니다. 앱 의도를 구현하는 앱은 먼저 사용자의 IntuneMAMPolicy 개체에서 속성을 검사 areSiriIntentsAllowed 해야 합니다.
앱 클립
앱에 앱 클립 대상이 포함된 경우 앱 클립에 관리 데이터가 표시되지 않는지 확인해야 합니다. 앱 클립은 관리되지 않는 위치로 간주해야 합니다. App Clips로의 SDK 통합은 현재 지원되지 않습니다.
인쇄
앱이 인쇄를 구현하고 사용자 지정 메뉴에서 사용자 지정 인쇄 작업을 제공하는 경우 이를 사용하여 UIPrintInteractionController.isPrintingAvailable() 사용자 지정 메뉴에 인쇄 작업을 추가해야 하는지 결정해야 합니다.
화면 캡처 차단
SDK의 Xcode 15용 v19.7.6 이상, Xcode 16용 v20.2.1 이상으로 업데이트한 앱의 경우 "모든 앱" 이외의 값으로 구성 Send Org data to other apps 한 경우 화면 캡처 블록이 적용됩니다. iOS 장치에 대한 화면 캡처를 허용하려면 앱 구성 정책 설정 "com.microsoft.intune.mam.screencapturecontrol = 사용 안 함"을 구성할 수 있습니다.
알림
앱이 알림을 받는 경우 이 시나리오를 지원하는 방법에 대한 지침은 다음 IntuneMAMPolicy.h 의 notificationPolicy 설명을 읽으십시오. 앱에서 의 설명에 등록 IntuneMAMPolicyDidChangeNotificationIntuneMAMPolicyManager.h하고 키체인을 통해 이 값을 전달 UNNotificationServiceExtension 하는 것이 좋습니다.
Safari 웹 확장
앱에 Safari 웹 확장이 있고 확장과 부모 애플리케이션 간의 데이터 전송을 지원하는 경우, 일부 시나리오에서 애플리케이션이 데이터 차단을 지원해야 할 수 있습니다. 데이터를 차단하려면 상위 애플리케이션에서 APIIntuneMAMPolicy.h를 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 프레임워크 패처를 설치, 제거 또는 확인하도록 선택할 수 있습니다. -
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 시작을 참조하세요.
종료 조건
제한 위치/열기 유효성 검사
설정하지 않은 경우 다른 이름으로 저장 및 열기 컨트롤을 구현합니다.
앱이 클라우드 저장소 또는 로컬 위치에 데이터를 저장하고 클라우드 저장소 또는 로컬 위치에서 데이터를 열 수 있는 모든 시나리오를 다시 숙지하세요.
단순성을 위해 이러한 테스트는 앱이 앱 내의 단일 위치에서 비즈니스용 비즈니스용 OneDrive에 데이터를 저장하고 여는 기능만 지원한다고 가정합니다. 그러나 앱에서 데이터 저장을 허용하는 모든 위치에 대해 지원되는 모든 저장 위치와 앱에서 데이터 열기를 허용하는 모든 위치에 대해 지원되는 모든 열린 위치 등 모든 조합의 유효성을 검사해야 합니다.
이러한 테스트의 경우 테스트를 시작하기 전에 앱을 설치하고, SDK와 통합하고, 관리 계정으로 로그인하세요.
또한
- 관리되는 계정의 정책을 다음과 같이 설정합니다.
- "다른 앱으로 조직 데이터 보내기"를 "정책 관리 앱"으로 변경했습니다.
- "다른 앱에서 데이터 받기"를 "정책 관리 앱"으로 변경했습니다.
| 시나리오 | 전제 조건 | 단계 |
|---|---|---|
| 저장 위치, 완전히 허용됨 | "조직 데이터 복사본 저장" 정책이 "허용"으로 설정됨 | - 앱에서 비즈니스용 OneDrive에 데이터를 저장할 수 있는 위치로 이동합니다. - 앱에 로그인한 동일한 관리 계정에 비즈니스용 OneDrive에 문서를 저장하려고 시도합니다. - 저장이 허용되는지 확인합니다. |
| 저장 위치, 제외 | - "조직 데이터 복사본 저장" 정책이 "차단"으로 설정됨 - "사용자가 선택한 서비스에 복사본을 저장할 수 있도록 허용" 정책이 "비즈니스용 OneDrive" 전용으로 설정됨 |
- 앱에서 비즈니스용 OneDrive에 데이터를 저장할 수 있는 위치로 이동합니다. - 앱에 로그인한 동일한 관리 계정에 비즈니스용 OneDrive에 문서를 저장하려고 시도합니다. - 저장이 허용되는지 확인합니다. - 앱이 허용하는 경우 파일을 다른 클라우드 저장 위치에 저장하고 파일이 차단되었는지 확인합니다. |
| 저장 위치, 차단됨 | "조직 데이터 복사본 저장" 정책이 "차단"으로 설정됨 | - 앱에서 비즈니스용 OneDrive에 데이터를 저장할 수 있는 위치로 이동합니다. - 앱에 로그인한 동일한 관리 계정에 비즈니스용 OneDrive에 문서를 저장하려고 시도합니다. - 저장이 차단되었는지 확인합니다. - 앱이 허용하는 경우 파일을 다른 클라우드 저장 위치에 저장하고 파일이 차단되었는지 확인합니다. |
| 다음에서 열기, 완전히 허용됨 | "조직 문서로 데이터 열기" 정책이 "허용"으로 설정됨 | - 앱에서 비즈니스용 OneDrive에서 데이터를 열 수 있는 위치로 이동합니다. - 앱의 저장소에 로그인한 동일한 관리 계정에서 비즈니스용 OneDrive의 문서를 열려고 시도합니다. - 열기가 허용되는지 확인합니다. |
| open from, exemped | - "조직 문서로 데이터 열기" 정책이 "차단"으로 설정됨 - "사용자가 선택한 서비스에서 데이터를 열 수 있도록 허용" 정책이 "비즈니스용 OneDrive" 전용으로 설정됨 |
- 앱에서 비즈니스용 OneDrive에서 데이터를 열 수 있는 위치로 이동합니다. - 앱의 저장소에 로그인한 동일한 관리 계정에서 비즈니스용 OneDrive의 문서를 열려고 시도합니다. - 열기가 허용되는지 확인합니다. - 앱이 허용하는 경우 다른 클라우드 저장 위치에서 다른 파일을 열고 해당 파일이 차단되었는지 확인합니다. |
| 다음에서 열기, 차단됨 | "조직 문서로 데이터 열기" 정책이 "차단"으로 설정됨 | - 앱에서 비즈니스용 OneDrive에서 데이터를 열 수 있는 위치로 이동합니다. - 앱의 저장소에 로그인한 동일한 관리 계정에서 비즈니스용 OneDrive의 문서를 열려고 시도합니다. - 열기가 차단되었는지 확인합니다. - 앱이 허용하는 경우 다른 클라우드 저장 위치에서 다른 파일을 열고 해당 파일이 차단되었는지 확인합니다. |
"복사 대상" 작업 유효성 검사
'복사 대상' 작업을 구현하지 않은 경우 건너뜁니다.
단순성을 위해 이러한 테스트는 앱이 Microsoft Word, Excel 등과 같은 Microsoft Office 응용 프로그램으로 데이터를 복사하는 기능만 포함한다고 가정합니다. 그러나 앱에서 데이터 복사를 허용하는 모든 위치에 대해 지원되는 모든 복사 위치 등 모든 조합의 유효성을 검사해야 합니다.
이러한 테스트의 경우 테스트를 시작하기 전에 앱을 설치하고, SDK와 통합하고, 관리 계정으로 로그인하세요.
또한
- Microsoft Word용 동작 확장을 사용하여 '복사 대상' 작업의 모든 통합 단계를 완료하고 앱을 성공적으로 빌드 및 실행합니다.
- 관리되는 계정의 정책을 다음과 같이 설정합니다.
- "다른 앱으로 조직 데이터 보내기"를 "정책 관리 앱"으로 변경했습니다.
| 시나리오 | 전제 조건 | 단계 |
|---|---|---|
| 제외할 앱 선택, 없음 | "다른 앱으로 조직 데이터 보내기" 정책이 "정책 관리 앱"으로 설정됨 | - 앱에서 Microsoft Word에 데이터를 복사할 수 있는 위치로 이동하여 해당 데이터에 대한 공유 옵션을 시작합니다. - 확인: "Word로 복사"를 옵션으로 보는 대신 "Word에서 열기"를 볼 수 있습니다. - "Word에서 열기"를 누르고 Word도 동일한 관리 계정으로 로그인되어 있는 경우 Word가 성공적으로 복사되고 조회되는지 확인합니다. |
인쇄 작업 유효성 검사
인쇄를 구현하지 않은 경우 건너 뜁니다.
이 테스트의 경우 앱을 설치하고, SDK와 통합하고, 관리 계정으로 로그인한 후 테스트를 시작합니다.
또한
- 인쇄의 모든 통합 단계를 완료하고 앱을 성공적으로 빌드 및 실행합니다.
- 앱에서 이미 APP IT 관리자가 인쇄를 허용하지 않는 경우를 처리하는 경고/작업 항목을 구현하고 있습니다. 이 테스트에서는 인쇄가 차단될 때 앱이 최종 사용자에게 경고 메시지를 표시한다고 가정합니다.
| 시나리오 | 단계 |
|---|---|
| 조직 데이터 인쇄, 차단 | - 앱에서 데이터를 볼 수 있는 위치로 이동하고 해당 데이터에 대한 공유 옵션을 시작합니다. - "인쇄"를 누르세요. - 차단 경고가 나타나고 인쇄가 허용되지 않는지 확인합니다. |
| 조직 데이터 인쇄, 허용 | - 앱에서 데이터를 볼 수 있는 위치로 이동하고 해당 데이터에 대한 공유 옵션을 시작합니다. - "인쇄"를 누르세요. - "인쇄" 보기가 나타나는지 확인하고 프린터를 선택하고 작업을 성공적으로 완료할 수 있습니다. |
수신 앱 구성 유효성 검사
암호가 없는 경우 건너뜁니다. iOS 애플리케이션에 대상 앱 구성을 사용하도록 설정합니다.
Intune은 앱 구성 정책 값을 앱에 전달합니다. 나중에 앱은 이러한 값을 사용하여 앱 내부의 동작 또는 UI를 변경해야 합니다. 철저한 종단 간 테스트는 두 구성 요소를 모두 다루어야 합니다.
Intune이 앱 구성 정책을 제대로 제공하고 있는지 확인하려면 다음을 수행합니다.
- 앱을 대상으로 지정하고 테스트 계정에 배포하는 앱 구성 정책을 구성합니다.
- 앱이 관리되는 장치에 대한 앱 구성을 지원하는 경우 관리되는 iOS Enterprise 장치에 대한 애플리케이션 구성 정책을 참조하세요.
- 앱이 관리되는 앱에 대한 앱 구성을 지원하는 경우 관리되는 앱에 대한 애플리케이션 구성 정책을 참조하세요.
- 앱에서 두 가지 유형의 앱 구성을 모두 지원하는 경우 두 가지 유형의 테스트 정책을 모두 만듭니다.
- 테스트 계정을 사용하여 앱에 로그인합니다.
- 앱을 탐색하여 호출하는
IntuneMAMAppConfigManager각 코드 경로를 실행합니다.appConfigForIdentity- 에 대한
appConfigForIdentity호출 결과를 기록하는 것은 전달된 설정의 유효성을 검사하는 간단한 방법입니다. 그러나 관리자는 앱 구성 설정에 대한 데이터를 입력할 수 있으므로 비공개 사용자 데이터를 기록하지 않도록 주의하세요.
- 에 대한
- 적용된 앱 구성 정책 유효성 검사를 참조하세요.
앱 구성은 앱별로 다르기 때문에 앱이 각 앱 구성 설정의 동작 또는 UI를 변경하는 방법을 확인하는 방법은 사용자만 알고 있습니다.
테스트할 때는 다음 사항을 고려하세요.
- 앱에서 지원하는 모든 값으로 서로 다른 테스트 앱 구성 정책을 만들어 모든 시나리오가 적용되도록 합니다.
- 각 설정에 대해 서로 다른 값으로 여러 테스트 앱 구성 정책을 만들어 앱의 충돌 해결 논리의 유효성을 검사합니다.
다음 단계
이 가이드를 순서대로 따르고 위의 모든 종료 조건을 완료했다면 축하합니다. 이제 앱이 Intune 앱 SDK와 완전히 통합되고 앱 보호 정책을 적용할 수 있습니다! 5단계: 다중 ID,6단계: 앱 보호 조건부 액세스 지원, 7단계: 웹 보기 기능과 같은 다른 중요한 앱 참여 기능을 검사하여 이러한 기능을 앱에 통합하세요.
앱 보호는 이제 앱의 핵심 시나리오입니다. 앱 개발을 계속하면서 이 가이드와 부록 을 계속 참조하세요.