iOS 用 Intune アプリ SDK - アプリ参加機能

iOS 用 Microsoft Intune アプリ SDK を使用すると、Intune アプリ保護ポリシー (APP または MAM ポリシーとも呼ばれます) をネイティブ iOS アプリに組み込むことができます。 Intune マネージド アプリケーションは、Intune アプリ SDK と統合されたアプリケーションです。 Intune 管理者は、Intune がアプリをアクティブに管理する場合、Intune で管理されるアプリにアプリ保護ポリシーを簡単に展開できます。

注:

このガイドは、いくつかの異なる段階に分かれています。 まず、「 統合の計画」を確認します。

ステージ 4: アプリ参加機能

ステージ目標

  • Intune App SDK によって提供されるさまざまなアプリ参加機能について説明します。
  • アプリとユーザーに関連するアプリ参加機能を統合します。
  • これらの機能の統合をテストします。

「アプリ参加機能」とは

この SDK 統合プロセスでは、開発者が記述する必要があるアプリ固有のコードの量を最小限に抑えることが試みられます。 SDK 統合の前の段階を正常に完了すると、ファイル暗号化、コピー/貼り付けの制限、スクリーンショットのブロック、データ転送の制限など、アプリ保護ポリシー設定の大部分をアプリに適用できるようになります。

ただし、一部の設定では、適切に適用するためにアプリ固有のコードが必要な場合があります。これらは、アプリ参加機能と呼ばれます。 通常、SDK には、これらの設定を自動的に適用するためのアプリケーションのコードまたはエンド ユーザー シナリオに関する十分なコンテキストがないため、開発者が SDK API を適切に呼び出す必要があります。

アプリ参加機能は必ずしもオプションではありません。 アプリの既存の機能によっては、これらの機能が必要になる場合があります。

このガイドの次の段階では、アプリ参加に関するいくつかの重要な機能について説明します。

このガイドの残りの部分では、アプリ参加機能の残りのセットについて説明します。

  • 許可されたアカウントを実装する
  • ファイル暗号化必須の実装
  • [名前を付けて保存] と [開く] コントロールを実装する
  • UIActivityViewController を使用してデータを共有する
  • iOS アプリケーションの対象構成 (APP/MAM アプリ構成) を有効にする
  • テレメトリ
  • Siri の意図
  • アプリ クリップ
  • 印刷
  • 通知
  • ビルド後のスクリプト

API を使用してアプリの動作をカスタマイズする

Intune アプリ SDK には、アプリに展開されている 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 App SDK に許可されたアカウントの指定された一覧を照会し、許可されたアカウントのみがデバイスにサインインしていることを確認できます。

許可されたアカウントを照会するには、アプリがIntuneMAMEnrollmentManagerallowedAccounts プロパティチェックする必要があります。 allowedAccounts プロパティは、許可されたアカウントを含む配列または nil のいずれかです。 プロパティが nil の場合、許可されているアカウントは指定されていません。 MSAL/OneAuth 対応アプリケーションは、IntuneMAMEnrollmentManager インスタンスの allowedAccountIds プロパティを使用して、オブジェクト ID Entraクエリを実行する必要があります。

アプリは、IntuneMAMAllowedAccountsDidChangeNotification通知を監視することで、allowedAccounts プロパティの変更に反応することもできます。 この通知は、 allowedAccounts プロパティの値が変更されるたびに投稿されます。

許可されたアカウントに API を使用する場合は、次の要件が必要です。

  • ID 比較では、UPN と OID の場合、大文字と小文字を区別しない必要があります。
  • ID 比較は、UPN と OID の両方をサポートする必要があります。
  • 管理者が指定したアカウントとユーザーが入力したアカウントの間の不一致を診断するために、アプリケーションにログが必要です。

ファイル暗号化必須の実装

IntuneMAMPolicy.h で定義されている isFileEncryptionRequired API は、IT 管理者がアプリケーションがディスクに保存されたファイルに対して Intune 暗号化を使用する必要がある場合、アプリケーションに通知します。 isFileEncryptionRequired が true の場合、IntuneMAMFile.hIntuneMAMFileProtectionManager.h、および IntuneMAMFDataProtectionManager.h の API を使用して、アプリによってディスクに保存されたすべてのファイルが暗号化されるようにするのはアプリの責任です。

アプリは、IntuneMAMFDataProtectionManager.hで定義されているIntuneMAMDataProtectionDidChangeNotification通知を確認することによって、このポリシーの変更に対応できます。

[名前を付けて保存] と [開く] コントロールを実装する

Intune を使用すると、IT 管理者はマネージド アプリがデータを保存したり開いたりできるストレージの場所を選択できます。 アプリは、IntuneMAMPolicy.h で定義されている isSaveToAllowedForLocation:withAccountId: API を使用して、許可された保存先ストレージの場所を Intune MAM SDK に照会できます。 アプリでは、同じく IntuneMAMPolicy.h で定義されている isOpenFromAllowedForLocation:withAccountId: API を使用して、許可されているオープンフロインからのストレージ場所について 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 アプリを開発している場合、 IntuneMAMPolicyprimaryUser を使用して、管理されている場合は当座預金を参照し、管理されていない場合は nil 現在のアカウントを参照してください。

保存シナリオの処理

データを新しいクラウド ストレージまたはローカルの場所に移動する前に、アプリは isSaveToAllowedForLocation:withAccountId: API とチェックして、IT 管理者がデータ転送を許可したかどうかを確認する必要があります。 このメソッドは、 IntuneMAMPolicy オブジェクトで呼び出されます。 インプレースで編集および保存されているデータは、この API でチェックする必要はありません。

注:

IntuneMAMPolicy オブジェクトは、保存されるデータの所有者のポリシーを表す必要があります。 特定の ID の IntuneMAMPolicy オブジェクトを取得するには、 IntuneMAMPolicyManagerpolicyForAccountId: メソッドを呼び出します。 所有者が ID を持たないアンマネージド アカウントである場合は、 nilpolicyForAccountId: に渡すことができます。 保存されるデータが組織データでなくても、 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 Online と Microsoft Entra ハイブリッド先進認証 SharePoint オンプレミスの場所の両方を表します。 SharePoint アカウントに関連付けられている ID は、2 番目の引数として渡す必要があります。
  • IntuneMAMSaveLocationLocalDrive - この場所は、アプリでのみアクセスできるアプリ サンドボックス ストレージを表します。 この場所は、ファイル ピッカーを使用して保存したり、共有拡張子を使用してファイルに保存したりするために使用 しないでください 。 ID をアプリサンドボックス ストレージに関連付けることができる場合は、2 番目の引数として渡す必要があります。 ID がない場合は、代わりに nil を渡す必要があります。 たとえば、アプリではアカウントごとに別々のアプリ サンドボックス ストレージ コンテナーを使用する場合があります。 この場合、アクセス対象のコンテナーを所有しているアカウントを 2 番目の引数として使用する必要があります。
  • IntuneMAMSaveLocationCameraRoll - この場所は iOS フォト ライブラリを表します。 iOS フォト ライブラリに関連付けられているアカウントがないため、この場所を使用する場合は、 nil のみを 2 番目の引数として渡す必要があります。
  • IntuneMAMSaveLocationAccountDocument- この場所は、以前にリストされていない、マネージド アカウントに関連付けられることができる organization の場所を表します。 場所に関連付けられている organization account は、2 番目の引数として渡す必要があります。 たとえば、organization アカウントに関連付けられているorganizationの LOB クラウド サービスに写真をアップロードします。
  • IntuneMAMSaveLocationOther - この場所は、組織にない場所、以前にリストされていない場所、または不明な場所を表します。 アカウントがその場所に関連付けられている場合は、2 番目の引数として渡す必要があります。 それ以外の場合は、代わりに nil を使用する必要があります。
保存場所に関する特別な考慮事項

IntuneMAMSaveLocationLocalDrive場所は、アプリでのみアクセスできるアプリ サンドボックス ストレージにのみ使用する必要があります。 ファイル ピッカーなど、Files アプリでデータにアクセスできる方法で iOS デバイスのストレージにファイルを保存できるかどうかを確認するには、IntuneMAMSaveLocationOther を使用する必要があります。

宛先の場所が一覧にない場合は、 IntuneMAMSaveLocationAccountDocument または IntuneMAMSaveLocationOther を使用する必要があります。 管理対象アカウントを使用してアクセスされる組織データがその場所に含まれている場合 (つまり、LOB クラウド サービス (組織データを格納する) IntuneMAMSaveLocationAccountDocument を使用する必要があります。 場所に組織データが含まれていない場合は、 IntuneMAMSaveLocationOther 場所を使用する必要があります。

オープン フロイン シナリオの処理

新しいクラウド ストレージまたはローカルの場所からデータをインポートする前に、アプリは isOpenFromAllowedForLocation:withAccountId: API とチェックして、IT 管理者がデータ転送を許可したかどうかを確認する必要があります。 このメソッドは、 IntuneMAMPolicy オブジェクトで呼び出されます。 インプレースで開かれているデータについては、この API でチェックする必要はありません。

注:

IntuneMAMPolicy オブジェクトは、データを受け取る ID のポリシーを表す必要があります。 特定の ID の IntuneMAMPolicy オブジェクトを取得するには、 IntuneMAMPolicyManagerpolicyForAccountId: メソッドを呼び出します。 受信側アカウントが ID を持たないアンマネージド アカウントの場合は、 nilpolicyForAccountId: に渡すことができます。 受信したデータが組織のデータでなくても、 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 Online と Microsoft Entra ハイブリッド先進認証 SharePoint オンプレミスの場所の両方を表します。 SharePoint アカウントに関連付けられている ID は、2 番目の引数として渡す必要があります。
  • IntuneMAMOpenLocationCamera - この場所は、カメラで撮影された新しい画像 のみ を表します。 iOS カメラに関連付けられたアカウントがないため、この場所を使用する場合は、2 番目の引数として nil のみを渡す必要があります。 iOS フォト ライブラリからデータを開くには、 IntuneMAMOpenLocationPhotos を使用します。
  • IntuneMAMOpenLocationPhotos - この場所は、iOS フォト ライブラリ内の既存の画像 のみ を表します。 iOS フォト ライブラリに関連付けられているアカウントがないため、この場所を使用する場合は、 nil のみを 2 番目の引数として渡す必要があります。 iOS カメラから直接撮影した画像を開くには、 IntuneMAMOpenLocationCamera を使用します。
  • IntuneMAMOpenLocationLocalStorage - この場所は、アプリでのみアクセスできるアプリ サンドボックス ストレージを表します。 この場所は、ファイル ピッカーからファイルを開いたり、openURL からの受信ファイルを処理したりするために使用 しないでください 。 ID をアプリサンドボックス ストレージに関連付けることができる場合は、2 番目の引数として渡す必要があります。 ID がない場合は、代わりに nil を渡す必要があります。 たとえば、アプリではアカウントごとに別々のアプリ サンドボックス ストレージ コンテナーを使用する場合があります。 この場合、アクセス対象のコンテナーを所有しているアカウントを 2 番目の引数として使用する必要があります。
  • IntuneMAMOpenLocationAccountDocument- この場所は、以前にリストされていない、マネージド アカウントに関連付けられることができる organization の場所を表します。 場所に関連付けられている organization account は、2 番目の引数として渡す必要があります。 たとえば、organization アカウントに関連付けられているorganizationの LOB クラウド サービスから写真をダウンロードします。
  • IntuneMAMOpenLocationOther - この場所は、組織外の場所、以前にリストされていない場所、または不明な場所を表します。 アカウントがその場所に関連付けられている場合は、2 番目の引数として渡す必要があります。 それ以外の場合は、代わりに nil を使用する必要があります。
オープンな場所に関する特別な考慮事項

IntuneMAMOpenLocationLocalStorage場所は、アプリからアクセスできるアプリ サンドボックス ストレージにのみ使用する必要があります。 ファイル ピッカーなど、Files アプリでもデータにアクセスできる他の方法を使用して iOS デバイスのストレージからファイルを開くことができるかどうかを確認するには、IntuneMAMOpenLocationOtherを使用する必要があります。

宛先の場所が一覧にない場合は、 IntuneMAMOpenLocationAccountDocument または IntuneMAMOpenLocationOther を使用する必要があります。 管理対象アカウントを使用してアクセスされる組織データが場所に含まれている場合。 たとえば、組織データを格納するための LOB クラウド サービス IntuneMAMOpenLocationAccountDocument を使用する必要があります。 場所に組織データが含まれていない場合は、 IntuneMAMSaveLocationOther 場所を使用する必要があります。

着信 NSItemProviders と Files の処理

共有拡張機能から受け取った NSItemProviders を処理するには、isOpenFromAllowedForLocation:withAccountId: の代わりにIntuneMAMPolicycanReceiveSharedItemProvider: メソッドを使用できます。 canReceiveSharedItemProvider: メソッドは NSItemProvider を受け取り、IT 管理者が IntuneMAMPolicy オブジェクトのアカウントに対して開くことを許可しているかどうかを返します。 このメソッドを呼び出す前に、項目を読み込む必要があります。 たとえば、 loadItemForTypeIdentifier:options:completionHandler を呼び出します。 このメソッドは、NSItemProvider ロード呼び出しに渡された完了ハンドラーから呼び出すこともできます。

受信ファイルの処理には、isOpenFromAllowedForLocation:withAccountId: の代わりに IntuneMAMPolicycanReceiveSharedFile: メソッドを使用できます。 canReceiveSharedFile: メソッドは NSString パスを受け取り、IT 管理者が IntuneMAMPolicy オブジェクトのアカウントに対して開くことを許可しているかどうかを返します。

共有のブロックされたアラート

UI ヘルパー関数は、 isSaveToAllowedForLocation:withAccountId: API または isOpenFromAllowedForLocation:withAccountId: API が呼び出され、保存/開く操作をブロックしていることがわかった場合に使用できます。 アプリで、操作がブロックされたことをユーザーに通知する場合は、IntuneMAMUIHelper.hで定義されている showSharingBlockedMessage API を呼び出して、汎用メッセージを含むアラート ビューを表示できます。

UIActivityViewController を使用してデータを共有する

リリース 8.0.2 以降、Intune App SDK はUIActivityViewControllerアクションをフィルター処理して、Intune管理された共有の場所のみを選択できます。 この動作は、アプリケーション データ転送ポリシーによって制御されます。

'コピー先' アクション

UIActivityViewControllerUIDocumentInteractionController を介してドキュメントを共有する場合、iOS は共有中のドキュメントを開くことをサポートするアプリケーションごとに [コピー先] アクションを表示します。 アプリケーションでは、Info.plist の CFBundleDocumentTypes 設定を使用して、サポートするドキュメントの種類を宣言します。 ポリシーでアンマネージド アプリケーションへの共有が禁止されている場合、この種類の共有は使用できなくなります。 代わりに、ユーザーは UI 以外のアクション拡張機能をアプリケーションに追加し、それを Intune App SDK にリンクする必要があります。 Action 拡張機能は単なるスタブです。 SDK はファイル共有動作を実装します。 次の手順に従います。

  1. アプリケーションには、Info.plist CFBundleURLTypes の下に少なくとも 1 つの schemeURL と、それに対応する -intunemam URL が定義されている必要があります。 例:

    <key>CFBundleURLSchemes</key>
    <array>
        <string>launch-com.contoso.myapp</string>
          <string>launch-com.contoso.myapp-intunemam</string>
    </array>
    
  2. アプリケーションとアクション拡張機能の両方が少なくとも 1 つのアプリ グループを共有する必要があり、アプリ グループは、アプリと拡張機能の IntuneMAMSettings 辞書の下に AppGroupIdentifiers 配列の下に一覧表示されている必要があります。

  3. アプリケーションとアクション拡張機能の両方に、キーチェーン共有機能が必要であり、 com.microsoft.intune.mam キーチェーン グループを共有します。

  4. アクション拡張機能に "Open in" という名前を付け、その後にアプリケーション名を指定します。 必要に応じて Info.plist をローカライズします。

  5. Apple の開発者向けドキュメントで説明されているように、拡張機能のテンプレート アイコンを提供します。 または、IntuneMAMConfigurator ツールを使用して、アプリケーション .app ディレクトリからこれらのイメージを生成することもできます。 このためには、次の操作を実行します。

    IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
    
  6. 拡張機能の Info.plist の IntuneMAMSettings で、値 YES の OpenInActionExtension という名前のブール値設定を追加します。

  7. 1 つのファイルと、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
    

既存の共有とアクション拡張機能を更新する

アプリに共有拡張機能またはアクション拡張機能が既に含まれている場合は、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:

データの共有 - 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 を対象とする構成データを提供できます。 アプリケーション構成データは、MDM チャネルではなく MAM サービスを通じてアプリに直接プッシュされます。 Intune アプリ 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 ターゲット アプリ構成に関するセクションを参照してください。

テレメトリ

既定では、iOS 用 Intune アプリ SDK は、次の種類のイベントに関するテレメトリを収集します:

  • アプリの起動: 管理の種類 (MDM を使用する MAM、MDM 登録を使用しない MAM など) 別に、Microsoft Intune が MAM 対応アプリの使用状況について学習するのに役立ちます。

  • 登録呼び出し: クライアント側から開始された登録呼び出しの成功率やその他のパフォーマンス メトリックについて Microsoft Intune が学習するのに役立ちます。

  • Intune アクション: 問題を診断し、Intune の機能を確認するために、Intune SDK アクションに関する情報を収集します。

注:

モバイル アプリケーションから Intune App SDK テレメトリ データを Microsoft Intune に送信しない場合は、Intune App SDK テレメトリ キャプチャを無効にする必要があります。 IntuneMAMSettings 辞書でプロパティ MAMTelemetryDisabled を YES に設定します。

Siri の意図

アプリが Siri インテントと統合されている場合、または Siri インテント寄付を行っている場合は、このシナリオをサポートする手順について、IntuneMAMPolicy.hareSiriIntentsAllowed のコメントを必ずお読みください。

注:

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.hnotificationPolicy のコメントを必ずお読みください。 アプリでは、IntuneMAMPolicyManager.hで説明されているIntuneMAMPolicyDidChangeNotificationに登録し、この値をキーチェーンを介してUNNotificationServiceExtensionに伝えることをお勧めします。

Safari Web 拡張機能

アプリに Safari Web 拡張機能があり、拡張機能と親アプリケーション間のデータ送信をサポートしている場合、一部のシナリオでは、アプリケーションがデータのブロックをサポートする必要がある場合があります。 データをブロックするには、親アプリケーションで IntuneMAMPolicy.hisAppSharingAllowed API を呼び出してから、Web 拡張機能をブロックします。

ビルド後のスクリプト

IntuneMAMFrameworkPatcher コマンド ライン ツールを、アプリケーションビルド プロセスの最終ステップとして実行する必要がなくなりました。 ただし、このツールは GitHub の iOS 用 Intune アプリ SDK の一部として使用できます。

重要

Intune MAM SDK の 17.7.1 リリース以降、この手順は不要になりました。 IntuneMAMFrameworkPatcher コマンド ライン ツールを実行する必要はなくなりました。

コマンド ラインの使用方法

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

パラメータ:

  • irv: このパラメーターを使用すると、アプリケーション ビルド プロセス用の 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 の概要」を参照してください。

終了条件

保存/開く制限の検証

スキップしない場合はスキップします。 [名前 を付けて保存] コントロールと [開く] コントロールを実装します

アプリがクラウド ストレージまたはローカルな場所にデータを保存したり、クラウド ストレージまたはローカルの場所からデータを作成したりできるすべてのシナリオについて理解し直してください。

わかりやすくするために、これらのテストでは、アプリ内の 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 のドキュメントを開いてみます。
- オープンが許可されていることを確認します。
Open from, exempted - 「組織のドキュメントにデータを開く」ポリシーを「ブロック」に設定
- 「ユーザーが選択したサービスのデータを開けるようにする」ポリシーが「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 と統合し、テストを開始する前にマネージド アカウントでログインします。

追加:

  • [ 印刷 ] からすべての統合手順を完了し、アプリを正常にビルドして実行しました。
  • アプリには、APP IT 管理者からの印刷が許可されていない場合にケースを処理するためのアラート/アクション項目が既に実装されています。このテストでは、印刷がブロックされたときにアプリがエンド ユーザーに警告を表示すると仮定します。
シナリオ 手順
組織データの印刷、ブロック - アプリがデータを表示できる場所に移動し、そのデータの共有オプションを起動します。
- 「印刷」を押します。
- ブロックの警告が表示され、印刷が許可されないことを確認します。
組織データの印刷、許可 - アプリがデータを表示できる場所に移動し、そのデータの共有オプションを起動します。
- 「印刷」を押します。
- 「印刷」ビューが表示され、プリンターを選択してアクションを正常に完了できることを確認します。

受信中のアプリ構成の検証

スキップしていない場合はスキップする iOS アプリケーションのターゲット アプリの構成を有効にします。

Intune は、アプリの構成ポリシーの値をアプリに配信する責任を負います。その後、アプリはこれらの値を使用してアプリ内の動作や UI を変更する責任を負います。 徹底的なエンドツーエンドのテストで、両方のコンポーネントをカバーする必要があります。

Intune がアプリ構成ポリシーを適切に提供していることを検証するには:

  1. アプリを対象とし、テスト アカウントに展開するアプリ構成ポリシーを構成します。
  2. テスト アカウントでアプリにログインします。
  3. アプリ内を移動して、 IntuneMAMAppConfigManagerappConfigForIdentityを呼び出す各コードパスを実行します。
    • appConfigForIdentity への呼び出しの結果をログ記録することは、配信された設定を検証する簡単な方法です。 ただし、管理者はアプリ構成設定の任意のデータを入力できるため、ユーザーの個人情報をログに記録しないように注意してください。
  4. 「適用されたアプリの構成ポリシーを検証する」を参照してください。

アプリの構成はアプリ固有のものであるため、各アプリ構成設定ごとにアプリが動作や UI をどのように変更するかを検証する方法を検証する方法は、あなただけが知っています。

テストするときは、次の点を考慮してください。

  • アプリがサポートするすべての値を使用して異なるテスト アプリ構成ポリシーを作成することで、すべてのシナリオを確実にカバーします。
  • 設定ごとに異なる値を持つ複数のテスト アプリ構成ポリシーを作成して、アプリの競合解決ロジックを検証します。

次の手順

このガイドを順番に実行し、上記のすべての終了基準を完了した場合、おめでとうございます。アプリは Intune アプリ SDK と完全に統合され、アプリ保護ポリシーを適用できるようになりました。 ステージ 5: マルチ IDステージ 6: アプリ保護の条件付きアクセスのサポートステージ 7: Web ビュー機能など、他の重要なアプリ参加機能をチェックして、これらをアプリに統合してください。

アプリ保護は、アプリの主要なシナリオになりました。 引き続き、アプリの開発を続ける際には、このガイドと 付録 を参照してください。