Android 用 Intune アプリ SDK - App Configuration

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

注:

このガイドは、いくつかの異なる段階に分かれています。 まず、「 ステージ 1: 統合を計画する」を確認することから始めます。

ステージ 6: App Configuration

ステージ目標

  • Android のアプリケーション構成オプションについて説明します。
  • アプリケーションで追加する構成 (存在する場合) を決定します。
  • Intune App SDK アプリケーション構成 API を統合します。
  • カスタム アプリケーション構成の競合解決ロジックを実装します。

Android での App Configuration

アプリケーション構成は、管理された構成またはアプリケーションの制限とも呼ばれ、開発者が定義したアプリケーション固有の設定であり、管理者が管理された設定で使用する場合にアプリ エクスペリエンスをより細かく制御するためにアプリに追加できます。 たとえば、アプリがブラウザーの場合は、管理者がブックマークを事前に設定したり、特定の Web ページをブロックしたり、シークレット モードを無効にしたりできる構成を追加することができます。 アプリケーションの構成は、完全にオプションですが、アプリの管理エクスペリエンスを強化するための強力なツールです。

詳細については、「Microsoft Intune のアプリ構成ポリシー」を参照してください。

Android の Built-In アプリの構成

Android では、 管理対象構成と呼ばれるアプリ構成がプラットフォームに組み込まれています。 これらの構成は Intune アプリ SDK に依存しず、Intune アプリ SDK を統合しないアプリで有効にできます。 これらの構成は、Google の Android Enterprise モードのいずれかで管理されているデバイスでアプリケーションが使用されている場合にのみ適用されます。 これらの Android Enterprise モードを Microsoft Intune でセットアップする方法の詳細については、「Android デバイスの登録」を参照してください。 管理者は、管理対象の Android Enterprise デバイス用にこれらのアプリケーション構成ポリシーを Microsoft Intune で構成できます。

アプリは、Android の RestrictionsManager または Intune App SDK を使用して、これらの管理者が構成した値を取得できます。 詳細については、「 SDK からのアプリ構成の取得 」を参照してください。

管理対象 Google Play アプリの委任されたスコープ

アプリ開発者 は、委任されたスコープ を使用して、マネージド Google Play アプリの拡張アクセス許可を統合できます。 委任されたスコープは、マネージド Google Play アプリに次の機能を提供します:

  • 他のアプリによる証明書のインストールと管理を許可する
  • アプリによる Android セキュリティ ログへのアクセスを許可する
  • アプリによる Android ネットワーク アクティビティ ログへのアクセスを許可する

これらの機能が Google の API を使用して管理対象 Google Play アプリに統合されたら、デバイス構成プロファイルを使用して Intune でこれらの設定を構成できます。 詳細については、「 Android Enterprise デバイスの設定 - > 企業所有の > アプリケーション」を参照してください。

アプリの実装の詳細については、 Android 開発者向けドキュメントの「委任スコープ」を参照してください。

Intune アプリ SDK アプリの構成

Intune アプリ SDK では、Android Enterprise の管理対象構成とは別に、アプリ構成を配信するための別のメカニズムがサポートされています。 これらの構成は Microsoft Intune 専用であり、Intune App SDK が統合されているアプリにのみ適用されます。 ただし、これらの構成は、Android Enterprise 管理を使用するデバイスに限定されません。 管理者は、Microsoft Intune でマネージド アプリのこれらのアプリケーション構成ポリシーを構成できます。

注:

アプリ構成は、Graph API を使用して構成することもできます。 詳細については、MAM Targeted Config の Graph API ドキュメントを参照してください。

アプリは、Intune App SDK を使用して、これらの管理者が構成した値を取得する必要があります。 詳細については、「 SDK からのアプリ構成の取得 」を参照してください。

アプリにどのような構成を追加する必要がありますか?

このガイドでは、この質問には答えることはできません。 管理下でどのような機能がアプリの価値を高めるかは、あなたとあなたのチームだけです。

次の質問は、ディスカッションを導き、アプリに追加したい構成を明らかにするのに役立つ場合があります。

  • 現在、アプリはどのような機能を提供していますか?
    • 管理中にこれらの機能を無効にする価値はありますか。
    • 管理中にこれらの機能を変更する価値はありますか?
  • 現在の管理下でアプリはどのように使用されていますか?
    • 管理者がユーザーに代わって事前に構成できるオプションはありますか?
    • マネージド シナリオでのみ管理者またはエンド ユーザーが実行するアクションはありますか?
    • 管理対象ユーザーから、全ユーザーには適していない可能性のある機能が要求されていませんか?

アプリに追加することにしたすべての構成に対して、次の 3 つの項目を定義する必要があります。

  • キー - この文字列は、この設定を他の設定から一意に識別します。 これは管理者によって構成されるため、人間が判読できる必要があります。
  • - この設定のデータ型は何ですか? 文字列、ブール値、整数、配列などですか?
  • 競合解決戦略 - 管理者が同じキーに複数の値を構成した場合、アプリはどのように応答しますか? 前述のブラウザーの例では、ブックマーク リストはすべての値を結合できますが、シークレットを無効にする設定では、競合する値のいずれかが "true" である場合は無効にすることができます。

自分のアプリは、マネージド デバイスまたはマネージド アプリの構成をサポートする必要がありますか?

管理対象デバイスに適用される構成と管理対象アプリに適用される構成は、 相互に排他的ではありません。 サポートする構成の種類 (またはその両方) を決定するときには、ユーザーのニーズを考慮する必要があります。

構成項目 管理対象デバイスの構成 マネージド アプリの構成
デバイスの適用性 Android Enterprise デバイス管理下にあるデバイスにのみ適用されます。 アプリが Intune アプリ SDK を統合し、ポータル サイトがインストールされている限り、すべてのデバイスに適用されます。
プラットフォーム Android のみ、Google サービスを使用しているデバイスに限定されます iOS アプリ SDK は、同じ構成をサポートしています。 開発者は、これらのキーを共有して一貫したクロスプラットフォーム エクスペリエンスを実現できます。
適用性 任意の EMM Microsoft Intune 専用
スキーマの検出可能性 アプリが Play にアップロードした後、スキーマが一般公開される 開発者の制御下でのスキーマの検出可能性

どちらのタイプのアプリ構成も、キーと値のペアに依存します。 Microsoft Intune では、これらの構成の内容は検査されず、管理者が構成した値がアプリに渡されるだけです。

Intune App SDK アプリ構成 API には、両方のチャネルの管理者が構成した値が含まれています。 アプリで両方のタイプのアプリ構成がサポートされている場合は、以下で説明するように API を使用します。

SDK からアプリ構成を取得する

アプリケーションは、 MAMAppConfigManager クラスと MAMAppConfig クラスを使用して、両方のチャネルから構成を受け取ることができます。

MAMAppConfigManager configManager = MAMComponents.get(MAMAppConfigManager.class);
String oid = <OID of user account>;
MAMAppConfig appConfig = configManager.getAppConfigForOID(oid);
String fooValue = appConfig.getStringForKey("foo", MAMAppConfig.StringQueryType.Any);

MAM に登録されたアカウントがないが、アプリで Android Enterprise の構成値 (特定のアカウントを対象としない) を取得する場合は、OID に null または空の文字列を渡すことができます。

注:

アプリで Intune App SDK を使用して Android Enterprise の管理対象構成を取得し、ポータル サイトがインストールされていない場合、これらの構成は空の ID を持つMAMUserNotificationを介して配信されます。

アプリでは、特定のキーでクエリを実行するのではなく、キーと値のペアのセットのリストとして生データを要求することもできます。

List<Map<String, String>> getFullData()

また、新しいアプリ構成データが利用可能になったことをアプリに通知する REFRESH_APP_CONFIG 通知に登録することもできます。 アプリがアプリ構成データをキャッシュする場合は、この通知に登録し、ハンドラー内のキャッシュされたデータを無効に する必要があります 。 詳細については 、「SDK からの通知を登録する」 を参照してください。

競合の解決

複数のアプリ構成ポリシーが同じアプリとアカウントを対象としている場合、同じキーに使用できる複数の競合する値が存在する可能性があります。

注:

MAM アプリ構成で設定された値は、Android Enterprise 構成で設定されたのと同じキーで値をオーバーライドします。

管理者が同じキーに競合する値を構成した場合、Intune にはこの競合を自動的に解決する方法はなく、すべての値をアプリで使用できるようにします。 この種の競合は、管理者が同じキーを持つ異なるアプリ構成セットを同じアカウントを含む複数のグループに対して行う場合に発生する可能性があります。

アプリは、特定のキーのすべての値を MAMAppConfig オブジェクトに要求できるため、独自のビジネス ロジックとの競合を解決できます。

List<Boolean> getAllBooleansForKey(String key)
List<Long> getAllIntegersForKey(final String key)
List<Double> getAllDoublesForKey(final String key)
List<String> getAllStringsForKey(final String key)

または、組み込みの競合解決戦略のいずれかで値を選択するように要求することもできます。

Boolean getBooleanForKey(String key, BooleanQueryType queryType)
Long getIntegerForKey(String key, NumberQueryType queryType)
Double getDoubleForKey(String key, NumberQueryType queryType)
String getStringForKey(String key, StringQueryType queryType)

使用可能な組み込みの競合解決戦略には、次のものがあります。

  • BooleanQueryType.Any, BooleanQueryType.And, BooleanQueryType.Or
  • NumberQueryType.Any, NumberQueryType.Min, NumberQueryType.Max
  • StringQueryType.AnyStringQueryType.MinStringQueryType.Max (最小値と最大値はアルファベット順のリストからのものです)。

終了条件

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

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

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

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

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

  • アプリがサポートするすべての値を使用して異なるテスト アプリ構成ポリシーを作成することで、すべてのシナリオを確実にカバーします。
  • 設定ごとに異なる値を持つ複数のテスト アプリ構成ポリシーを作成して、アプリの競合解決ロジックを検証します。
  • アプリが REFRESH_APP_CONFIG 通知に登録されている場合は、アプリがアクティブな使用中にアプリ構成ポリシーを更新し、ポリシーが更新されるのを待機し、このコードパスが適切に実行されていることを確認します。
  • アプリで両方のタイプのアプリ構成がサポートされている場合は、両方のシナリオをテストして、実装で getAppConfigForOIDに正しい ID が提供されることを確認します。

次の手順

上記のすべての 終了基準 を完了したら、アプリはアプリ構成ポリシーと同様に正常に統合されます。

後続のセクション「 ステージ 7: アプリ参加機能」は、アプリの希望するアプリ保護ポリシーのサポートに応じて、必須の場合と不要な場合があります。 これらの機能のいずれかがアプリに適用されているかどうかわからない場合は、「 SDK 統合に関する重要な決定事項」を参照してください。