Intune App SDK for iOS - アプリ参加機能
Microsoft Intune App SDK for iOS を使用すると、Intuneアプリ保護ポリシー (APP または MAM ポリシーとも呼ばれます) をネイティブ iOS アプリに組み込むことができます。 Intuneマネージド アプリケーションは、Intune App SDK と統合されたアプリケーションです。 Intune管理者は、アプリをアクティブに管理する場合に、Intuneマネージド アプリにアプリ保護ポリシー Intune簡単にデプロイできます。
注:
このガイドは、いくつかの異なるステージに分かれています。 まず、「統合の 計画」を確認します。
ステージ 4: アプリ参加機能
ステージ Goals
- Intune App SDK によって提供されるさまざまなアプリ参加機能について説明します。
- アプリとユーザーに関連するアプリ参加機能を統合します。
- これらの機能の統合をテストします。
"アプリ参加機能" とは
この SDK 統合プロセスは、開発者が記述する必要があるアプリ固有のコードの量を最小限に抑えようとします。 SDK 統合の前の段階を正常に完了することで、アプリは、ファイルの暗号化、コピー/貼り付けの制限、スクリーンショットのブロック、データ転送の制限など、アプリ保護ポリシー設定の大部分を適用できるようになりました。
ただし、アプリ固有のコードを適切に適用する必要がある設定がいくつかあります。これらは、アプリ参加機能と呼ばれます。 通常、SDK には、アプリケーションのコードやエンド ユーザーシナリオに関する十分なコンテキストがないため、これらの設定を自動的に適用するため、開発者は SDK API を適切に呼び出します。
アプリ参加機能は必ずしも省略可能ではありません。 アプリの既存の機能によっては、これらの機能が必要になる場合があります。
このガイドの次の段階では、いくつかの重要なアプリ参加機能について説明します。
- 「ステージ 5: マルチ ID」で説明されているマルチ ID。
- 「ステージ 6: App Protection の条件付きアクセスのサポート」で説明されている App Protection CA
- 「ステージ 7: Web ビュー機能」で説明されている Web ビュー固有の機能
このガイドの残りの部分では、アプリ参加機能の残りのセットについて説明します。
- 許可されたアカウントを実装する
- ファイル暗号化を実装する必要があります
- 名前を付けて保存および開くコントロールを実装する
- UIActivityViewController を使用してデータを共有する
- iOS アプリケーションのターゲット構成 (APP/MAM アプリ構成) を有効にする
- テレメトリ
- Siri の意図
- アプリ クリップ
- 印刷
- 通知
- ビルド スクリプトの投稿
API を使用してアプリの動作をカスタマイズする
Intune App 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 App SDK にクエリを実行し、許可されたアカウントのみがデバイスにサインインしていることを確認できます。
許可されたアカウントを照会するには、アプリがIntuneMAMEnrollmentManager
の allowedAccounts
プロパティをチェックする必要があります。
allowedAccounts
プロパティは、許可されたアカウントまたは nil を含む配列です。 プロパティが nil の場合、許可されているアカウントは指定されていません。 MSAL/OneAuth が有効なアプリケーションでは、IntuneMAMEnrollmentManager
インスタンスの allowedAccountIds
プロパティを使用して Entra オブジェクト ID を照会する必要があります。
アプリは、IntuneMAMAllowedAccountsDidChangeNotification
通知を観察することで、allowedAccounts
プロパティの変更に対応することもできます。 通知は、 allowedAccounts
プロパティの値が変更されるたびに投稿されます。
許可されたアカウントに API を使用する場合は、次の要件が必要です。
- UPN と OID の場合、ID の比較では大文字と小文字を区別しない必要があります。
- ID 比較では、UPN と OID の両方をサポートする必要があります。
- アプリケーションには、管理者が指定したアカウントとユーザーが入力したアカウントの不一致を診断するためのログが必要です。
ファイル暗号化を実装する必要があります
IntuneMAMPolicy.h
で定義されているisFileEncryptionRequired
API は、IT 管理者がアプリケーションでディスクに保存されたすべてのファイルでIntune暗号化を使用する必要がある場合に、アプリケーションに通知します。
isFileEncryptionRequired
が true の場合は、アプリによってディスクに保存されたすべてのファイルが、IntuneMAMFile.h
、IntuneMAMFileProtectionManager.h
、およびIntuneMAMFDataProtectionManager.h
の API を使用して暗号化されるようにする必要があります。
アプリは、IntuneMAMFDataProtectionManager.h
で定義されているIntuneMAMDataProtectionDidChangeNotification
通知を監視することで、このポリシーの変更に対応できます。
名前を付けて保存および開くコントロールを実装する
Intuneを使用すると、IT 管理者は、マネージド アプリがデータを保存または開くことができるストレージの場所を選択できます。 アプリは、IntuneMAMPolicy.h
で定義されているisSaveToAllowedForLocation:withAccountId:
API を使用して、許可された保存場所について、Intune MAM SDK に対してクエリを実行できます。 アプリは、 isOpenFromAllowedForLocation:withAccountId:
API ( IntuneMAMPolicy.h
でも定義) を使用して、許可されたオープンからストレージの場所を SDK に照会することもできます。
さらに、アプリは、共有拡張機能からの受信データが許可されていることを確認するには、IntuneMAMPolicy.h
で定義されているcanReceiveSharedItemProvider:
API に対してクエリを実行します。 アプリは、 canReceiveSharedFile:
API に対してクエリを実行して、openURL 呼び出しからの受信ファイルを確認することもできます。また、 IntuneMAMPolicy.h
注:
MAM SDK v15.1.0 以降の内部動作に変更が加えられた。
-
nil
アカウントは、LocalDrive/LocalStorage の場所の現在のアカウントとして扱われなくなります。nil
アカウントを渡すと、アンマネージド アカウントとして扱われます。 アプリはサンドボックス ストレージの処理方法を制御できるため、ID はそれらの場所に関連付けることができ、関連付ける必要があります。 -
nil
アカウントは、シングル ID アプリの現在のアカウントとして扱われなくなります。 シングル ID アプリでnil
アカウントを渡すと、マルチ ID アプリに渡された場合とまったく同じように処理されるようになります。 シングル ID アプリを開発している場合は、IntuneMAMPolicy
のprimaryUser
を使用して、管理されている場合は現在のアカウントを参照し、管理されていない場合は現在のアカウントを参照nil
してください。
保存シナリオの処理
新しいクラウド ストレージまたはローカルの場所にデータを移動する前に、IT 管理者がデータ転送を許可しているかどうかを知るために、アプリは isSaveToAllowedForLocation:withAccountId:
API でチェックする必要があります。 このメソッドは、 IntuneMAMPolicy
オブジェクトで呼び出されます。 インプレースで編集および保存されているデータは、この API で確認する必要はありません。
注:
IntuneMAMPolicy
オブジェクトは、保存するデータの所有者のポリシーを表す必要があります。 特定の ID の IntuneMAMPolicy
オブジェクトを取得するには、 IntuneMAMPolicyManager
の policyForAccountId:
メソッドを呼び出します。 所有者が ID を持たないアンマネージド アカウントの場合は、 nil
を policyForAccountId:
に渡すことができます。 保存するデータが組織のデータではない場合でも、 isSaveToAllowedForLocation:withAccountId:
は引き続き呼び出す必要があります。 宛先の場所を所有するアカウントには、受信アンマネージド データを制限するポリシーが引き続き含まれている可能性があります。
isSaveToAllowedForLocation:withAccountId:
メソッドは、2 つの引数を受け取ります。 最初の引数は、IntuneMAMPolicy.h
で定義IntuneMAMSaveLocation
型の列挙値です。 2 番目の引数は、場所を所有する ID の UPN です。 所有者が不明な場合は、代わりに nil
を使用できます。
サポートされている保存場所
Intune MAM SDK では、IntuneMAMPolicy.h
で定義されている次の保存場所がサポートされます。
-
IntuneMAMSaveLocationOneDriveForBusiness
- この場所は、OneDrive for Businessの場所を表します。 OneDrive アカウントに関連付けられている ID は、2 番目の引数として渡す必要があります。 -
IntuneMAMSaveLocationSharePoint
- この場所は、SharePoint オンラインとハイブリッド モダン認証 SharePoint オンプレミスの場所Microsoft Entraの両方を表します。 SharePoint アカウントに関連付けられている ID は、2 番目の引数として渡す必要があります。 -
IntuneMAMSaveLocationLocalDrive
- この場所は、アプリによってのみアクセスできるアプリ サンドボックス ストレージを表します。 この場所は、ファイル ピッカーを使用して保存したり、共有拡張機能を使用してファイルに保存したりするために使用 しないでください 。 ID をアプリ サンドボックス ストレージに関連付けることができる場合は、2 番目の引数として渡す必要があります。 ID がない場合は、代わりにnil
を渡す必要があります。 たとえば、アプリでは、異なるアカウントに対して個別のアプリ サンドボックス ストレージ コンテナーを使用する場合があります。 この場合、アクセスするコンテナーを所有するアカウントを 2 番目の引数として使用する必要があります。 -
IntuneMAMSaveLocationCameraRoll
- この場所は、iOS フォト ライブラリを表します。 iOS フォト ライブラリに関連付けられているアカウントがないため、この場所を使用する場合は、nil
のみを 2 番目の引数として渡す必要があります。 -
IntuneMAMSaveLocationAccountDocument
- この場所は、マネージド アカウントに関連付けることができる、以前に一覧に記載されていない任意のorganization場所を表します。 場所に関連付けられているorganization アカウントは、2 番目の引数として渡す必要があります。 たとえば、organization アカウントに関連付けられているorganizationの LOB クラウド サービスに写真をアップロードします。 -
IntuneMAMSaveLocationOther
- この場所は、以前に一覧表示されていない、または不明な場所を表します。 アカウントが場所に関連付けられている場合は、2 番目の引数として渡す必要があります。 それ以外の場合は、代わりにnil
を使用する必要があります。
保存場所に関する特別な考慮事項
IntuneMAMSaveLocationLocalDrive
の場所は、アプリのみがアクセスできるアプリ サンドボックス ストレージにのみ使用する必要があります。 ファイル ピッカーまたはファイル アプリでデータにアクセスできるその他の方法を使用して、ファイルを iOS デバイス ストレージに保存できるかどうかを確認するには、 IntuneMAMSaveLocationOther
を使用する必要があります。
宛先の場所が一覧にない場合は、 IntuneMAMSaveLocationAccountDocument
または IntuneMAMSaveLocationOther
を使用する必要があります。 場所に、マネージド アカウント (つまり) を使用してアクセスされる組織データが含まれている場合。組織データを格納するための LOB クラウド サービス)、 IntuneMAMSaveLocationAccountDocument
を使用する必要があります。 場所に組織データが含まれていない場合は、 IntuneMAMSaveLocationOther
の場所を使用する必要があります。
オープンからシナリオを処理する
新しいクラウド ストレージまたはローカルの場所からデータをインポートする前に、IT 管理者がデータ転送を許可しているかどうかを知るために、アプリは isOpenFromAllowedForLocation:withAccountId:
API でチェックする必要があります。 このメソッドは、 IntuneMAMPolicy
オブジェクトで呼び出されます。 インプレースで開かれているデータは、この API で確認する必要はありません。
注:
IntuneMAMPolicy
オブジェクトは、データを受信する ID のポリシーを表す必要があります。 特定の ID の IntuneMAMPolicy
オブジェクトを取得するには、 IntuneMAMPolicyManager
の policyForAccountId:
メソッドを呼び出します。 受信アカウントが ID を持たないアンマネージド アカウントの場合は、 nil
を policyForAccountId:
に渡すことができます。 受信するデータが組織のデータではない場合でも、 isOpenFromAllowedForLocation:withAccountId:
を呼び出す必要があります。 データを所有するアカウントには、送信データ転送の宛先を制限するポリシーが引き続き含まれている可能性があります。
isOpenFromAllowedForLocation:withAccountId:
メソッドは、2 つの引数を受け取ります。 最初の引数は、IntuneMAMPolicy.h
で定義IntuneMAMOpenLocation
型の列挙値です。 2 番目の引数は、場所を所有する ID の UPN です。 所有者が不明な場合は、代わりに nil
を使用できます。
サポートされているオープンロケーション
Intune MAM SDK では、IntuneMAMPolicy.h
で定義されている次の開いている場所がサポートされます。
-
IntuneMAMOpenLocationOneDriveForBusiness
- この場所は、OneDrive for Businessの場所を表します。 OneDrive アカウントに関連付けられている ID は、2 番目の引数として渡す必要があります。 -
IntuneMAMOpenLocationSharePoint
- この場所は、SharePoint オンラインとハイブリッド モダン認証 SharePoint オンプレミスの場所Microsoft Entraの両方を表します。 SharePoint アカウントに関連付けられている ID は、2 番目の引数として渡す必要があります。 -
IntuneMAMOpenLocationCamera
- この場所は、カメラによって撮影された新しい画像 のみを 表します。 iOS カメラに関連付けられているアカウントがないため、この場所を使用する場合は、nil
のみを 2 番目の引数として渡す必要があります。 iOS フォト ライブラリからデータを開く場合は、IntuneMAMOpenLocationPhotos
を使用します。 -
IntuneMAMOpenLocationPhotos
- この場所は、iOS フォト ライブラリ内の既存のイメージ のみを 表します。 iOS フォト ライブラリに関連付けられているアカウントがないため、この場所を使用する場合は、nil
のみを 2 番目の引数として渡す必要があります。 iOS カメラから直接撮影した画像を開く場合は、IntuneMAMOpenLocationCamera
を使用します。 -
IntuneMAMOpenLocationLocalStorage
- この場所は、アプリによってのみアクセスできるアプリ サンドボックス ストレージを表します。 この場所は、ファイル ピッカーからファイルを開いたり、openURL からの受信ファイルを処理したりするために使用 しないでください 。 ID をアプリ サンドボックス ストレージに関連付けることができる場合は、2 番目の引数として渡す必要があります。 ID がない場合は、代わりにnil
を渡す必要があります。 たとえば、アプリでは、異なるアカウントに対して個別のアプリ サンドボックス ストレージ コンテナーを使用する場合があります。 この場合、アクセスするコンテナーを所有するアカウントを 2 番目の引数として使用する必要があります。 -
IntuneMAMOpenLocationAccountDocument
- この場所は、マネージド アカウントに関連付けることができる、以前に一覧に記載されていない任意のorganization場所を表します。 場所に関連付けられているorganization アカウントは、2 番目の引数として渡す必要があります。 たとえば、organization アカウントに関連付けられているorganizationの LOB クラウド サービスから写真をダウンロードします。 -
IntuneMAMOpenLocationOther
- この場所は、以前に一覧表示されていない非組織化の場所、または不明な場所を表します。 アカウントが場所に関連付けられている場合は、2 番目の引数として渡す必要があります。 それ以外の場合は、代わりにnil
を使用する必要があります。
オープンな場所に関する特別な考慮事項
IntuneMAMOpenLocationLocalStorage
場所は、アプリがアクセスできるアプリ サンドボックス ストレージにのみ使用する必要があります。 ファイル ピッカーを使用して iOS デバイス ストレージからファイルを開くことができるか、またはファイル アプリでもデータにアクセスできるその他の方法でファイルを開くことができるかどうかを確認するには、 IntuneMAMOpenLocationOther
を使用する必要があります。
宛先の場所が一覧にない場合は、 IntuneMAMOpenLocationAccountDocument
または IntuneMAMOpenLocationOther
を使用する必要があります。 場所に、マネージド アカウントを使用してアクセスされる組織データが含まれている場合。 たとえば、組織データを格納するための LOB クラウド サービス IntuneMAMOpenLocationAccountDocument
使用する必要があります。 場所に組織データが含まれていない場合は、 IntuneMAMSaveLocationOther
の場所を使用する必要があります。
受信 NSItemProviders とファイルの処理
共有拡張機能から受信した NSItemProviders を処理するために、isOpenFromAllowedForLocation:withAccountId:
ではなく、IntuneMAMPolicy
のcanReceiveSharedItemProvider:
メソッドを使用できます。
canReceiveSharedItemProvider:
メソッドは NSItemProvider を受け取り、IT 管理者がIntuneMAMPolicy
オブジェクトのアカウントに開くことを許可するかどうかを返します。 このメソッドを呼び出す前に、項目を読み込む必要があります。 たとえば、 loadItemForTypeIdentifier:options:completionHandler
を呼び出します。 このメソッドは、NSItemProvider 読み込み呼び出しに渡される完了ハンドラーから呼び出すこともできます。
受信ファイルを処理するために、isOpenFromAllowedForLocation:withAccountId:
の代わりにIntuneMAMPolicy
のcanReceiveSharedFile:
メソッドを使用できます。
canReceiveSharedFile:
メソッドは NSString パスを受け取り、IT 管理者がIntuneMAMPolicy
オブジェクトのアカウントに開くことを許可するかどうかを返します。
ブロックされたアラートの共有
UI ヘルパー関数は、 isSaveToAllowedForLocation:withAccountId:
または isOpenFromAllowedForLocation:withAccountId:
API のいずれかが呼び出され、保存/開くアクションをブロックするために見つかった場合に使用できます。 アプリがアクションがブロックされたことをユーザーに通知する場合は、IntuneMAMUIHelper.h
で定義されているshowSharingBlockedMessage
API を呼び出して、汎用メッセージを含むアラート ビューを表示できます。
UIActivityViewController を使用してデータを共有する
リリース 8.0.2 以降、Intune App SDK では、UIActivityViewController
アクションをフィルター処理して、Intuneマネージド共有の場所のみを選択できるようにします。 この動作は、アプリケーション データ転送ポリシーによって制御されます。
"コピー先" アクション
UIActivityViewController
とUIDocumentInteractionController
を介してドキュメントを共有する場合、iOS では、共有されているドキュメントの開き方をサポートするアプリケーションごとに "コピー先" アクションが表示されます。 アプリケーションは、サポートするドキュメントの種類を Info.plist の CFBundleDocumentTypes
設定で宣言します。 この種類の共有は、ポリシーでアンマネージド アプリケーションへの共有が禁止されている場合、使用できなくなります。 代わりに、ユーザーは UI 以外のアクション拡張機能をアプリケーションに追加し、Intune App SDK にリンクする必要があります。 Action 拡張機能は単なるスタブです。 SDK では、ファイル共有動作が実装されます。 次の手順に従います。
アプリケーションには、Info.plist
CFBundleURLTypes
に対応する-intunemam
と共に、少なくとも 1 つの schemeURL が定義されている必要があります。 以下に例を示します。<key>CFBundleURLSchemes</key> <array> <string>launch-com.contoso.myapp</string> <string>launch-com.contoso.myapp-intunemam</string> </array>
アプリケーションとアクションの両方の拡張機能は、少なくとも 1 つのアプリ グループを共有する必要があります。アプリ グループは、アプリと拡張機能の 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
という名前のブール値設定を追加します。NSExtensionActivationRule
を構成して、1 つのファイルと、com.microsoft.intune.mam
プレフィックスが付いたアプリケーションのCFBundleDocumentTypes
のすべての種類をサポートします。 たとえば、アプリケーションで 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
既存の共有とアクションの拡張機能を更新する
アプリに既に Share または Action 拡張機能が含まれている場合は、Intuneの種類を許可するようにNSExtensionActivationRule
を変更する必要があります。 拡張機能でサポートされる型ごとに、プレフィックスに 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を使用して構成データをターゲットにして展開できます。 Intune App SDK for iOS のバージョン 7.0.1 以降では、MAM ターゲット構成に参加しているアプリは、MAM サービス経由で MAM ターゲット構成データを提供できます。 アプリケーション構成データは、MDM チャネルを介してではなく、MAM サービスを介してアプリに直接プッシュされます。 Intune App SDK には、これらのコンソールから取得されたデータにアクセスするためのクラスが用意されています。 前提条件は次のとおりです。
MAM ターゲット構成 UI にアクセスする前に、アプリをIntune MAM サービスに登録する必要があります。 詳細については、「 アプリ保護ポリシーの受信」を参照してください。
アプリのソース ファイルに
IntuneMAMAppConfigManager.h
を含めます。[[IntuneMAMAppConfigManager instance] appConfigForAccountId:]
を呼び出して、App Config オブジェクトを取得します。IntuneMAMAppConfig
オブジェクトで適切なセレクターを呼び出します。 たとえば、アプリケーションのキーが文字列の場合は、stringValueForKey
またはallStringsForKey
を使用する必要があります。 戻り値とエラー条件の詳細については、「IntuneMAMAppConfig.h
」を参照してください。
Graph APIの機能の詳細については、「Graph API リファレンス」を参照してください。
iOS で MAM 対象アプリ構成ポリシーを作成する方法の詳細については、「iOS/iPadOS のアプリ構成ポリシー Microsoft Intune使用する方法」の MAM 対象アプリ構成に関するセクションを参照してください。
テレメトリ
既定では、Intune App SDK for iOS では、次の種類のイベントに関するテレメトリが収集されます。
アプリの起動: 管理の種類別の MAM 対応アプリの使用状況 (MDM を使用した MAM、MDM 登録のない MAM など) についてMicrosoft Intuneに役立ちます。
登録呼び出し: 成功率と、クライアント側から開始された登録呼び出しのその他のパフォーマンス メトリックについてMicrosoft Intuneに役立ちます。
Intuneアクション: 問題を診断し、Intune機能を確保するために、SDK アクションに関する情報Intune収集します。
注:
Intune App SDK テレメトリ データをモバイル アプリケーションからMicrosoft Intuneに送信しない場合は、App SDK テレメトリ キャプチャIntune無効にする必要があります。 IntuneMAMSettings ディクショナリで MAMTelemetryDisabled
プロパティを YES に設定します。
Siri の意図
アプリが Siri Intents と統合されている場合、または Siri Intent Donations を作成する場合は、このシナリオのサポート手順については、IntuneMAMPolicy.h
のareSiriIntentsAllowed
に関するコメントを必ずお読みください。
注:
iOS 16 以降では、Swift アプリ意図を作成するための新しいアプリ意図システム フレームワークを使用できます。 アプリ意図を実装するアプリは、まず、ユーザーの IntuneMAMPolicy オブジェクトの areSiriIntentsAllowed
プロパティをチェックする必要があります。
アプリ クリップ
アプリにアプリ クリップ ターゲットが含まれている場合は、アプリ クリップにマネージド データが表示されていないことを確認してください。 アプリ クリップは、アンマネージドの場所と見なす必要があります。 App Clips への SDK の統合は現在サポートされていません。
印刷
アプリが印刷を実装し、カスタム メニューにカスタム印刷アクションを提供する場合は、 UIPrintInteractionController.isPrintingAvailable()
を使用して、カスタム メニューに印刷アクションを追加する必要があるかどうかを判断してください。
スクリーン キャプチャのブロック
SDK の Xcode 15 および v20.2.1 以降で v19.7.6 以降に更新されたアプリの場合、"すべてのアプリ" 以外の値に Send Org data to other apps
を構成している場合、画面キャプチャ ブロックが適用されます。 iOS デバイスの画面キャプチャを許可する場合は、アプリ構成ポリシー設定 "com.microsoft.intune.mam.screencapturecontrol = Disabled" を構成できます。
通知
アプリが通知を受け取る場合は、このシナリオのサポート手順については、IntuneMAMPolicy.h
のnotificationPolicy
に関するコメントを必ずお読みください。 アプリは、IntuneMAMPolicyManager.h
で説明されているIntuneMAMPolicyDidChangeNotification
に登録し、キーチェーンを介してUNNotificationServiceExtension
にこの値を伝達することをお勧めします。
Safari Web 拡張機能
アプリに Safari Web 拡張機能があり、拡張機能と親アプリケーションの間でのデータの送信がサポートされている場合、一部のシナリオでは、アプリケーションでデータのブロックをサポートする必要がある場合があります。 データをブロックするには、親アプリケーションで、IntuneMAMPolicy.h
で isAppSharingAllowed
API を呼び出し、Web 拡張機能をブロックします。
ビルド スクリプトの投稿
IntuneMAMFrameworkPatcher コマンド ライン ツールを、アプリケーション ビルド プロセスの最後の手順として実行する必要がなくなりました。 ただし、このツールは GitHub の Intune App SDK for iOS の一部として使用できます。
重要
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 App SDK の概要」を参照してください。
終了条件
制限への保存と制限からのオープンの検証
名前を付けて保存コントロールと open-from コントロールを実装していない場合はスキップします。
アプリがクラウド ストレージまたはローカルの場所にデータを保存し、クラウド ストレージまたはローカルの場所からデータを開くことができるすべてのシナリオで、自分をリバイアします。
わかりやすくするために、これらのテストでは、アプリ内の 1 つの場所から OneDrive for Business へのデータの保存と開き方のサポートのみがアプリに含まれているものとします。 ただし、すべての組み合わせを検証する必要があります。アプリでデータの保存が許可されているすべての場所に対してサポートされているすべての保存場所と、アプリでデータを開く場所に対してサポートされているすべての開いている場所を検証する必要があります。
これらのテストでは、アプリをインストールし、SDK と統合し、テストを開始する前にマネージド アカウントにログインします。
追加:
- マネージド アカウントのポリシーを次のように設定します。
- "組織データを他のアプリに送信する" を "ポリシー管理アプリ" に送信します。
- "他のアプリからデータを受信する" から "ポリシー管理アプリ" に。
シナリオ | 前提 条件 | 手順 |
---|---|---|
に保存、完全に許可 | "組織データのコピーを保存する" ポリシーが "許可" に設定されている | - アプリがOneDrive for Businessにデータを保存できる場所に移動します。 - ドキュメントをOneDrive for Businessに保存し、アプリにログインしたのと同じマネージド アカウントに保存します。 - 保存が許可されていることを確認します。 |
に保存し、除外する | - "組織データのコピーを保存する" ポリシーが "ブロック" に設定されている - "選択したサービスへのコピーの保存をユーザーに許可する" ポリシーが "OneDrive for Business" のみに設定されている |
- アプリがOneDrive for Businessにデータを保存できる場所に移動します。 - ドキュメントをOneDrive for Businessに保存し、アプリにログインしたのと同じマネージド アカウントに保存します。 - 保存が許可されていることを確認します。 - アプリで許可されている場合は、ファイルを別のクラウド ストレージの場所に保存し、ブロックされていることを確認します。 |
に保存し、ブロックする | "組織データのコピーを保存する" ポリシーが "ブロック" に設定されている | - アプリがOneDrive for Businessにデータを保存できる場所に移動します。 - ドキュメントをOneDrive for Businessに保存し、アプリにログインしたのと同じマネージド アカウントに保存します。 - 保存がブロックされていることを確認します。 - アプリで許可されている場合は、ファイルを別のクラウド ストレージの場所に保存し、ブロックされていることを確認します。 |
から開き、完全に許可 | "組織ドキュメントにデータを開く" ポリシーが "許可" に設定されている | - アプリがOneDrive for Businessからデータを開くことができる場所に移動します。 - アプリのストレージにログインしたのと同じマネージド アカウントから、OneDrive for Businessからドキュメントを開こうとします。 - オープンが許可されていることを確認します。 |
から開く、除外する | - "組織ドキュメントにデータを開く" ポリシーが "ブロック" に設定されている - "ユーザーが選択したサービスからデータを開くことを許可する" ポリシーが "OneDrive for Business" のみに設定されている |
- アプリがOneDrive for Businessからデータを開くことができる場所に移動します。 - アプリのストレージにログインしたのと同じマネージド アカウントから、OneDrive for Businessからドキュメントを開こうとします。 - オープンが許可されていることを確認します。 - アプリで許可されている場合は、別のクラウド ストレージの場所から別のファイルを開き、ブロックされていることを確認します。 |
から開く、ブロックする | "組織ドキュメントにデータを開く" ポリシーが "ブロック" に設定されている | - アプリがOneDrive for Businessからデータを開くことができる場所に移動します。 - アプリのストレージにログインしたのと同じマネージド アカウントから、OneDrive for Businessからドキュメントを開こうとします。 - 開いているがブロックされていることを確認します。 - アプリで許可されている場合は、別のクラウド ストレージの場所から別のファイルを開き、ブロックされていることを確認します。 |
"コピー先" アクションの検証
"コピー先" アクションを実装していない場合はスキップします。
わかりやすくするために、これらのテストでは、Microsoft Word、Excel などの Microsoft Office アプリケーションにデータをコピーするためのサポートのみがアプリに含まれていることが前提となります。ただし、すべての組み合わせを検証する必要があります。サポートされているすべてのコピー先の場所は、アプリがデータのコピー先として許可するすべての場所に対して行います。
これらのテストでは、アプリをインストールし、SDK と統合し、テストを開始する前にマネージド アカウントにログインします。
追加:
- Microsoft Word用アクション拡張機能を使用して "コピー先" アクションのすべての統合手順を完了し、アプリを正常にビルドして実行します。
- マネージド アカウントのポリシーを次のように設定します。
- "組織データを他のアプリに送信する" を "ポリシー管理アプリ" に送信します。
シナリオ | 前提 条件 | 手順 |
---|---|---|
除外するアプリを選択し、なし | "他のアプリに組織のデータを送信する" ポリシー が "ポリシーで管理されているアプリ" に設定されている | - アプリが Microsoft Wordにデータをコピーできる場所に移動し、そのデータの共有オプションを起動します。 - オプションとして [Wordにコピー] が表示される代わりに、[Wordで開く] が表示されていることを確認します。 - [Wordで開く] を押し、ドキュメントがコピーされ、正常に表示されていることを確認します。Wordも同じマネージド アカウントでサインインしている場合。 |
印刷アクションの検証
印刷を実装していない場合はスキップ します。
このテストでは、アプリをインストールし、SDK と統合し、テストを開始する前にマネージド アカウントにログインします。
追加:
- 印刷からのすべての統合手順を完了し、アプリを正常にビルドして実行します。
- アプリでは、アプリ IT 管理者から印刷が許可されていない場合に対応するアラート/アクション 項目が既に実装されています。このテストでは、印刷がブロックされたときにアプリがエンド ユーザーにアラートを求めると仮定します。
シナリオ | 手順 |
---|---|
組織データの印刷、ブロック | - アプリでデータを表示できる場所に移動し、そのデータの共有オプションを起動します。 - [印刷] を押します。 - ブロック アラートが表示され、印刷が許可されていないことを確認します。 |
組織データの印刷、許可 | - アプリでデータを表示できる場所に移動し、そのデータの共有オプションを起動します。 - [印刷] を押します。 - [印刷] ビューが表示されていることを確認し、プリンターを選択して操作を正常に完了できます。 |
アプリ構成の受信の検証
iOS アプリケーションの対象アプリ構成を有効にしなかった場合はスキップします。
Intuneは、アプリ構成ポリシーの値をアプリに配信する役割を担います。その後、アプリはそれらの値を使用してアプリ内の動作または UI を変更する責任を負います。 完全なエンドツーエンドテストは、両方のコンポーネントをカバーする必要があります。
Intuneがアプリ構成ポリシーを適切に配信していることを検証するには、
- アプリを対象とし、テスト アカウントにデプロイするアプリ構成ポリシーを構成します。
- アプリでマネージド デバイスのアプリ構成がサポートされている場合は、「 マネージド iOS Enterprise デバイスのアプリケーション構成ポリシー」を参照してください。
- アプリでマネージド アプリのアプリ構成がサポートされている場合は、「マネージド アプリの アプリケーション構成ポリシー」を参照してください。
- アプリで両方の種類のアプリ構成がサポートされている場合は、テスト用に両方の種類のポリシーを作成します。
- テスト アカウントを使用してアプリにログインします。
- アプリ内を移動して、
IntuneMAMAppConfigManager
のappConfigForIdentity
を呼び出す各コードパスを実行します。-
appConfigForIdentity
への呼び出しの結果をログに記録することは、配信される設定を簡単に検証する方法です。 ただし、管理者はアプリ構成設定のデータを入力できるため、プライベート ユーザー データをログに記録しないように注意してください。
-
- 適用 されたアプリ構成ポリシーの検証に関するページを参照してください。
アプリ構成はアプリ固有であるため、アプリの構成設定ごとにアプリの動作または UI を変更する方法を検証する方法のみがわかっています。
テストするときは、次の点を考慮してください。
- すべてのシナリオを確実にカバーするには、アプリがサポートするすべての価値を持つ異なるテスト アプリ構成ポリシーを作成します。
- 設定ごとに異なる値を持つ複数のテスト アプリ構成ポリシーを作成して、アプリの競合解決ロジックを検証します。
次の手順
このガイドに従い、上記のすべての終了条件を完了した場合、アプリは Intune App SDK と完全に統合され、アプリ保護ポリシーを適用できるようになりました。 ステージ 5: マルチ ID、ステージ 6: App Protection 条件付きアクセスのサポート、ステージ 7: Web ビュー機能など、他の重要なアプリ参加機能をチェックして、これらをアプリに統合してください。
アプリ保護は、アプリのコア シナリオになりました。 アプリの開発を続ける場合は、このガイドと 付録 を引き続き参照してください。