2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Microsoft IntuneからiPhoneおよびiPadにアプリ専用の設定を配信する

Posted at

モバイル端末管理ツールの一種であるMicrosoft Intuneから、iPhoneにアプリ専用の設定値を配信することがありました。備忘録として、Intune側での設定方法とiOSアプリでの読み出し方を記載します。

Intune側設定

アプリ構成ポリシーを追加します。手順の流れは以下の通りです。

  1. アプリ構成ポリシー: "マネージドデバイスの追加"を選ぶ
  2. ポリシーの概要を設定する
  3. iOS端末に書き込む値を設定する
  4. どのグループに端末を配信するかを設定する
  5. ポリシーの内容を確認し、OKであれば確定する
  6. ポリシーが端末に反映されているか確認する

1. アプリ構成ポリシー: "マネージドデバイス"の追加を選ぶ

Microsoft Endpoint Manager admin centerを開き、アプリ > アプリ構成ポリシー > 追加 > マネージドデバイスを選択します。

Microsoft Intuneからのアプリ構成ポリシー設定の選択

2. ポリシーの概要を設定する

"基本"にて、以下の項目を入力します。

  • ポリシー名*: 必須。配信する設定に応じて命名する
  • 説明: 任意。ポリシーの配信目的、概要などを記載する
  • プラットフォーム名: "iOS/iPadOS"
  • 対象アプリ: Intuneで配信しているiOS/iPadOSアプリのうち、設定を配信したいアプリを選ぶ

3. iOS端末に書き込む値を設定する

本項目はiOSでのMDM管理設定(mcx_preference_settings)に相当します。そのため、アプリからはUserDefaultsを介して取得できます。

構成設定は、XMLデータか構成デザイナーで指定できます。以下は、

  • ManagedDevice = true
  • ManagedDeviceId = IntuneでのデバイスID

を書き込む例です。

構成デザイナーの場合

構成キー 値の型 構成値
ManagedDevice ブール値 true
ManagedDeviceId 文字列 {{deviceid}}

xmlの場合

<dict>
   <key>ManagedDevice</key>
   <true/>
   <key>ManagedDeviceId</key>
   <string>{{deviceid}}</string>
</dict>

値には、Intuneで定義されている変数を指定できます。これらの変数は{{変数名}}と書くと参照できます。なお、Intune上では変数名について記載ミスがあっても警告やエラーは表示されません(型の不整合については表示されます)。

なお、複数のアプリ構成ポリシー間もしくはコンプライアンスポリシー間で競合値があった場合、どれが反映されるかはランダムになる1のでご注意ください。

4. どのグループに端末を配信するかを設定する

  • ポリシーを配信したいグループを"組み込まれたグループ"
  • 配信しないグループを"除外されたグループ"

で指定します。

除外は組み込まれたグループよりも優先されるので、除外されたグループに指定されたiOS端末にはポリシーは適用されません。

5. ポリシーの内容を確認し、OKであれば確定する

ポリシーの内容が表示されるので、問題がなければ確定します。

6. ポリシーが端末に反映されているか確認する

作成されたアプリ構成ポリシーにて、"管理しているデバイス"で状態が"成功"であれば設定が反映されています。まだ反映されていない場合は最大で数時間待機するか、または同期を行ってポリシーを反映します。

iOS端末側の実装

以下の2手順でポリシーに設定した値を取得することができます。ポリシーの適用状態によっては設定値を取得できない場合があるので、その場合のデフォルト値を考慮しておく必要があります。

1. ManagedPreferenceを取得する

MDMから配信されたManagedPreferenceは、UserDefaultsから取得できます。ManagedPreferenceは"com.apple.configuration.managed"キー以下に格納されています。なお、以下のケースでは返り値はnilになります。

  • MDM管理でない端末で当該アプリを実行している場合
  • ポリシーが当該端末に反映されていない場合
func getManagedPreference() -> [String: Any]? {
    return UserDefaults.standard.object(forKey: "com.apple.configuration.managed") as? [String: Any]
}

2. ManagedPreferenceから、特定の設定値を読み出す

以下の処理より、ManagedPreference中の設定値を取得できます。値が設定されていない場合にクラッシュすることがないよう、 as? 当該パラメータの型でキャストした上で値を取得します。

func deviceId() -> String? {
    guard let managedProfile = getManagedProfile() else { return nil }
    let deviceId = managedProfile["ManagedDeviceId"] as? String
    return deviceId
}
  1. https://docs.microsoft.com/ja-jp/mem/intune/configuration/device-profile-troubleshoot

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?