デバイスをプロビジョニングする

デバイスをプロビジョニングする方法はいくつかあります。どのプロビジョニング方法を使用するかは、お客様のビジネス要件によって決まります。

デバイスのプロビジョニングの基本

お客様がサポートする必要があるデバイス プロビジョニングのデプロイ シナリオ(BYOD や会社所有など)によって、使用する動作モード(デバイス所有者モード、プロファイル所有者モードなど)が決まります。同様に、サポートする必要があるオペレーション モードと Android リリースによって、実装するプロビジョニング方法が決まります。

デプロイメント シナリオ

会社所有の導入シナリオでは、企業は従業員が使用するデバイスを所有し、完全に管理します。通常、組織はデバイス全体を厳密にモニタリングおよび管理する必要がある場合に、会社所有デバイスをデプロイします。

BYOD の導入シナリオをサポートしている会社は、従業員が個人所有のデバイスを業務に持ち込み、そのデバイスを使用して会社の特権情報やアプリケーションにアクセスできるようにしています。

運用モード

会社所有のデプロイは、デバイス所有者の運用モードでサポートされています。Android では、管理アプリは Device Policy Controller(DPC)と呼ばれます。DPC は Android 搭載デバイスにポリシーを適用し、デバイス所有者として機能し、デバイス全体を管理します。デバイス所有者として、DPC はデバイス全体の接続の構成、グローバル設定の構成、出荷時設定へのリセットなど、デバイス全体のアクションを実行できます。

BYOD デプロイは、プロファイル オーナーの運用モードでサポートされています。企業は DPC を使用して、デバイスのプライマリ ユーザー アカウントに仕事用プロファイルを追加することで、個人用デバイスを仕事で使用できるようにします。仕事用プロファイルはプライマリ ユーザーに関連付けられていますが、別のプロファイルとして関連付けられています。プロファイル所有者として、DPC はデバイス上の仕事用プロファイルのみを管理し、仕事用プロファイルの外部では制御できません。

デバイス所有者のプロビジョニング方法

新しいデバイスの初期設定時または出荷時の設定にリセットした後に、デバイス所有者モードをプロビジョニングする必要があります。これ以外の時点では、デバイス所有者モードをデバイスにプロビジョニングすることはできません。

デバイス所有者モードをプロビジョニングするには、ユースケースに応じて主に 2 種類のプロビジョニング方法があります。

  • デバイスドリブンのフローでは、IT 管理者は NFC を使用して多数のデバイスをプロビジョニングできます。このフローは、managed Google Play アカウントまたは Google Workspace のシナリオで使用できます。
  • ユーザードリブンのフローでは、組織が Google Workspace を使用しているかどうかによってオプションは異なります。
    • Google Workspace のシナリオでは、ユーザーはデバイスの初期設定時に Google アカウントを追加します。DPC はデバイス所有者を設定する手順をユーザーに案内する必要があります。ユーザー主導のフローは、エンドユーザーが新しいデバイスをセットアップするのに役立ちます。また、デバイスが NFC をサポートしていない場合の代替手段でもあります。
    • 組織が Google Workspace を使用していない場合は、managed Google Play アカウントの方法を使用する必要があります。

注: Play でアプリの配信を特定の国に制限している場合、デバイス所有者のプロビジョニングの際にそれらの制限は無視されます。DPC は、デバイスが対象国にない場合でもダウンロードされます。

プロファイル所有者のプロビジョニング方法

プロファイル所有者の運用モードをプロビジョニングするために推奨される方法は、組織が Google Workspace を使用しているかどうかによって異なります。

  • Google Workspace の場合、推奨される方法は、ユーザーがユーザーの Google アカウントを追加し、DPC がユーザーにプロファイル所有者を設定する手順を示すユーザー主導のフローです。
  • 組織が Google Workspace を使用しない場合は、managed Google Play アカウントの使用をおすすめします。

DPC を手動でインストールするようにユーザーに指示する従来の方法もサポートされています。ユーザーが Google Play から DPC をダウンロードしてインストールすると、DPC はプロファイル オーナーを設定する残りのプロセスをユーザーに指示します。

Android バージョン間の主なプロビジョニングの違い

デプロイ シナリオ 運用モード プロビジョニング方法 5.0、5.1 6.0 以降 7.0 以降
会社所有 デバイス所有者 QR コード
managed Google Play アカウント
Google アカウント
NFC
BYOD プロファイル所有者 managed Google Play アカウント
Google アカウント 5.11
DPC の手動インストール

実装に関する一般的な考慮事項

実装するオペレーション モードに関係なく、DPC を記述する際に考慮すべき点がいくつかあります。

Google Play 開発者サービスの互換性

Google Play 開発者サービスの APK ガイドには、API トランザクションの前に Google Play 開発者サービスのバージョン チェックを行うようデベロッパーに説明されています。Google Play 開発者サービスを更新しようとすると、デバイスのセットアップ プロセスが深刻な中断を起こすため、デバイスのプロビジョニングが完了する前に DPC が Google Play 開発者サービスの更新を試行しないでください。

Google Play 開発者サービスと DPC の互換性に関する主なポイントは次のとおりです。

  • DPC は、特定のデバイスに付属の Google Play 開発者サービスを使用して実行する必要があります。
  • DPC は、デバイスのプロビジョニング時に利用可能になる Google Play 開発者サービスの将来のバージョンの新機能に依存するべきではありません。

デバイスのプロビジョニングが完了すると、DPC は最新機能を使用できるようになります。Google Play 開発者サービスの更新を求めるメッセージが DPC に表示されます。ただし、なんらかの理由で機能が利用できない場合、DPC はデバイスに付属のバージョンに適切にフォールバックする必要があります。

デバイスの詳細を取得する

反映には遅延があるため、新しく登録したデバイスに対して devices.get を呼び出してからデバイスの詳細が返されるまでに 2 分ほどかかることがあります。

エンドユーザーがデバイスまたは仕事用プロファイルを使用する前にワークフローで詳細が必要な場合は、DPC の進行状況画面を使用して、呼び出しが成功するまで待つことをおすすめします。

プロファイル所有者モードの実装に関する考慮事項

DPC を作成してプロファイル所有者のオペレーション モードを実装する際は、次の点を考慮してください。

個人用 DPC を削除または無効にする

プロファイル所有者モードのオペレーションをプロビジョニングすると、DPC は個人用プロファイルでの実行を開始し、仕事用プロファイルの作成プロセスを開始します。仕事用プロファイルが作成されると、DPC は仕事用プロファイル内でも実行されます。仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。その時点で、個人用プロファイルの DPC 自体を無効にするか、デバイスのユーザーが削除する必要があります。

ユーザーが個人用 DPC を削除する

  1. 個人用 DPC は ACTION_MANAGED_PROFILE_PROVISIONED をリッスンします。(Android 5.1 デバイスの場合、個人用 DPC は代わりに ACTION_MANAGED_PROFILE_ADDED をリッスンする必要があります)。
  2. 個人用 DPC がアンインストール リクエスト ACTION_UNINSTALL_PACKAGE を開始します。個人用 DPC のアンインストールを求めるメッセージが表示されます。最適なユーザー エクスペリエンスを実現するには、プロビジョニング フロー中にアンインストール プロセスを行う必要があります。

個人用 DPC が自身を無効にする

  1. 個人用 DPC は ACTION_MANAGED_PROFILE_PROVISIONED をリッスンします。(Android 5.1 デバイスの場合、個人用 DPC は代わりに ACTION_MANAGED_PROFILE_ADDED をリッスンする必要があります)。
  2. 該当する場合、個人用 DPC は自身を無効にする前にデバイスの管理者権限を解放する必要があります。
  3. 個人用 DPC は、COMPONENT_ENABLED_STATE_DISABLED パラメータを使用して setApplicationEnabledSetting 無効化リクエストを開始します。
  4. ユーザーは Google Play から個人用 DPC を再度有効にできます。

デバイス所有者モードの実装に関する考慮事項

DPC を記述してデバイス所有者モードのオペレーションを実装する場合は、次の点を考慮してください。

デバイスが新品であるか、出荷時設定にリセットされている必要があります。

新しいデバイスの初期設定時または出荷時の設定にリセットした後に、デバイス所有者モードをプロビジョニングする必要があります。これ以外の段階では、デバイスにデバイス所有者モードをプロビジョニングすることはできません。

デバイス オーナー モードでは、DPC がデバイスを完全に制御できます。初期設定が許可された後、デバイス所有者モードをプロビジョニングする場合:

  • マルウェアがデバイス所有者を作成してデバイスを乗っ取るおそれがあります。
  • デバイスにユーザーデータやアプリがすでに存在する場合、プライバシーの問題が発生する可能性があります。

会社所有デバイスでのみデバイス所有者モードを設定する

デバイス所有者モードのプロビジョニングは、顧客の会社が所有すると確認されたデバイスに対してのみ行ってください。これを確認するには、一意のデバイス識別子(シリアル番号など)を検出するか、EMM ポリシーでデバイスの登録が許可されている専用のアカウントを使用します。

デバイスの会社所有権を確認できない場合は、デバイス所有者モードが誤ってプロビジョニングされないように、フェイルセーフ メカニズムを作成する必要があります。たとえば、デバイス所有者モードをプロビジョニングする前に、デバイスのユーザーに確認や同意のアクションを求めることができます。

システムアプリを有効にする

DPC が仕事用プロファイルをプロビジョニングする際、ランチャー アイコンのないシステムアプリはデバイスに不可欠であると想定され、仕事用プロファイルでの実行が自動的に許可されます。ランチャー アイコンを持つシステムアプリはオプションとみなされ、ユーザーは有効にするかどうかを決定できます。

Google Play からシステムアプリを有効にする

Google Play を使用するとシステムアプリを簡単に有効にできます。ユーザーはアプリ アップデートが利用可能になり次第入手できます。

Android フレームワーク API を使用してシステムアプリを有効にする

ユーザーがデバイスを使い始めたらすぐにシステムアプリが表示されるようにするには、デバイスのプロビジョニング プロセスの一環としてシステムアプリを有効にします。DPC は、DevicePolicyManager.enableSystemApp() を使用して、パッケージ名またはインテントによってシステムアプリを有効にします。

有効にして EMM コンソールで IT 管理者に表示するシステムアプリを特定するには、いくつかの方法があります。

システムアプリ カタログを作成する

この方法では、各デバイスがデバイス上のアプリを特定し、このデータを EMM コンソールに返します。EMM コンソールでは、デバイス ポリシーの作成時にこのデータが動的に表示されるため、IT 管理者はアプリごとにアプリを管理できます。

  1. 仕事用プロファイルがデバイスにまだプロビジョニングされていない場合は、queryIntentActivities() を使用して、ランチャー アイコンを持つすべてのアプリのリストをデバイスに pull します。

    private List<ResolveInfo> getAppsWithLauncher() {
      Intent i = new Intent(Intent.ACTION_MAIN);
      i.addCategory(Intent.CATEGORY_LAUNCHER);
      return getPackageManager().queryIntentActivities(i, 0);
    }
    
  2. 仕事用プロファイルがデバイスにすでにプロビジョニングされている場合は、PackageManager.GET_DISABLED_COMPONENTSPackageManager.GET_UNINSTALLED_PACKAGES を使用して、仕事用プロファイル内のすべてのアプリのリストを取得します。

  3. アプリリストでシステムアプリを見つけるには、アプリがデバイスのシステム イメージにインストールされているかどうかを示す FLAG_SYSTEM を確認します。

長所:

  • IT 管理者は、あらゆるデバイス上のアプリの全体像を把握できます。
  • 有効にするアプリを細かく制御できる。

短所:

  • デバイスごとに異なるアプリ カタログがあるため、単一のポリシー構成のモデルを複数のデバイスタイプに適用することは困難です。
  • OEM 固有のアプリの量を IT 管理者にわかりやすく提示することは、難しい場合があります。

システムアプリを機能別に分類する

IT 管理者は、デバイスのグループに対してシステムアプリを有効にする場合、機能に基づいて汎用アプリ(「システム ブラウザ」など)を選択します。DPC は、そのインテントに対してすべてのシステムアプリを許可します。

長所:

  • IT 管理者向けのシンプルな機能ベースのイネーブルメント。
  • さまざまなデバイスで一貫した機能を確保します(少なくとも一般的なユースケースの場合)。

短所:

  • システムアプリを、すべてのデバイスタイプでサポートされているアプリに制限します。
  • IT 管理者は、ある OEM バージョンのアプリ(Samsung® ブラウザなど)をプッシュし、別の OEM バージョン(LG® ブラウザなど)をプッシュしたくない場合があります。
  • IT 管理者は、複数のアプリを push したくはないものの、複数のインテント ハンドラがある場合に阻止できません。

承認済みのシステムアプリのみをサポートする

OEM と連携して特定の OEM パッケージを特定し、EMM コンソール内でそのパッケージのみをサポートします。また、OEM アプリが Google Play でホストされていないため、OEM アプリの管理対象構成をカタログ化することもできます。

長所:

  • 統合ワークフローが大幅に簡素化され、最初の 2 つのオプションで問題となるエッジケースを排除できます。
  • OEM アプリの管理対象構成をカタログ化し、IT 管理者向けの EMM コンソールに表示できます。
  • フラッグシップ デバイスのサポートに関して OEM と密接な関係を築ける。

短所:

  • その結果、スケーラビリティが低く、消費者の選択が減少します。

DPC のテストシナリオ

Test DPC は、DPC アプリのエンタープライズ機能のテスト用に Google が提供するオープンソース アプリです。Test DPC は github または Google Play から入手できます。Test DPC を使用すると、次のことができます。

  • Android で機能をシミュレートする
  • ポリシーの設定と適用
  • アプリとインテントの制限を設定する
  • 仕事用プロファイルをセットアップする
  • 完全管理対象の Android デバイスを設定する

Test DPC は主に Android のエンタープライズ ソリューションをテストする手段となっていますが、Android 機能のサンプルコードのソースとしても使用できます。

プロビジョニングのカスタマイズ

デバイスのプロビジョニング中、システム ユーザー インターフェースではステータスバーにデフォルトの色が表示され、画面の上部にデフォルトのロゴが表示されます。カスタムカラーやロゴを設定して、DPC とシステム インターフェースの間で一貫した視覚的な移行を実現したり、管理者が EMM コンソールを使用してそれらを設定したりできます。たとえば、管理者は会社のロゴをアップロードしたり、通知を表示する画面のデザインをカスタマイズしたりできます。

DPC は、DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR エクストラと DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI エクストラを使用して、色とロゴを選択します。

カスタムカラーを設定するには、EXTRA_PROVISIONING_MAIN_COLOR を使用して、デバイスのプロビジョニング中に表示されるメインの色を示す整数を設定します。ACTION_PROVISION_MANAGED_PROFILE または ACTION_PROVISION_MANAGED_DEVICE を使用して、エクストラ(定数)をインテントに追加します。

整数の表現方法については、をご覧ください。例については、TestDPC アプリの MAIN_COLOR をご覧ください。

カスタムロゴを設定するにはEXTRA_PROVISIONING_LOGO_URI を使用して、デバイスのプロビジョニング中に画面の上部に表示される画像を設定します。ACTION_PROVISION_MANAGED_PROFILE または ACTION_PROVISION_MANAGED_DEVICE を使用して、インテントにエクストラ(定数)を設定します。画像のピクセル密度がデバイスに対して適切であることを確認してください。

例については、TestDPC アプリの LOGO_URI をご覧ください。

QR コードによる方法

QR コードのプロビジョニング方法では、設定ウィザードから QR コードをスキャンして、デバイス所有者モードをセットアップして構成します。QR コードには、DPC がデバイスをプロビジョニングするために必要なすべての情報を含む Key-Value ペアのペイロードが含まれています。

IT 管理者は、EMM コンソールでプロビジョニングするデバイスの QR コードを作成できます。IT 管理者がエンドユーザーに QR コードを送信し、エンドユーザーが QR コードをスキャンしてデバイスをプロビジョニングします。

QR コード プロビジョニングのユースケース

タブレットなど、一部のデバイスは NFC に対応していません。QR コードのプロビジョニングは、NFC をサポートしていない分散型のデバイス フリートをプロビジョニングする際に便利な方法です。IT 管理者は、ユーザーに QR コードを送信して、ユーザー主導のプロビジョニングを許可できます。

QR コードのプロビジョニングに、Google ドメインや Google アカウントなどの Google ID は必要ありません。Android を使用しているが Google Workspace を使用していない組織には、Google ID がありません。

NFC と同様に、QR コード プロビジョニングを使用すると、Google ID(または任意の ID)が不要な、または望ましくない、キオスクや 1 回限りのデプロイが可能になります。たとえば、店舗にあるキオスク デバイスはどのユーザーも所有せず、エンドユーザー ID も持たせません。

QR コードを作成

QR コードのプロビジョニングで有効な QR コードは、UTF-8 でエンコードされた JavaScript® Object Notation(JSON)文字列です。有効な QR コードに以下のプロパティを含めることができます。

常に必須

DPC がまだデバイスにインストールされていない場合は必須

デバイスがまだ Wi-Fi に接続されていない場合に推奨

任意

このサンプルでは、有効な QR コードを作成します。

{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":
"com.emm.android/com.emm.android.DeviceAdminReceiver",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM":
"gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=",

"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION":
"https://path.to/dpc.apk",
    "android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false,
    "android.app.extra.PROVISIONING_WIFI_SSID": "GuestNetwork",
    "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
        "dpc_company_name": "Acme Inc.",
        "emm_server_url": "https://server.emm.biz:8787",
        "another_custom_dpc_key": "dpc_custom_value"
    }
}

QR コードのプロビジョニング プロセス

  1. セットアップ ウィザードで、ウェルカム画面を 6 回タップするよう求めるメッセージが表示されます。タップは画面上の同じ場所で行う必要があります。
  2. 設定ウィザードで QR コードリーダーをダウンロードできるように、インターネットに接続するようユーザーに求めます。
  3. Google Play 開発者サービスが、QR コード認識エンジンを含むモジュールをダウンロードします。
  4. ユーザーは、IT 管理者から提供された QR コードをスキャンします。
  5. 設定ウィザードが DPC アプリをダウンロードし、ACTION_PROVISION_MANAGED_DEVICE を使用してデバイス所有者のプロビジョニング プロセスを開始します。

managed Google Play アカウントによる方法

DPC は、managed Google Play アカウントのプロビジョニング方法を使用して、デバイス所有者モードまたはプロファイル所有者モードを設定できます。このプロビジョニング方法は、Google Workspace を使用していない組織を対象としています。

managed Google Play アカウントのプロビジョニング方法では、DPC サポート ライブラリを使用します。このクライアント ライブラリを使用すると、managed Google Play アカウントのスムーズな運用が可能になります。また、managed Google Play アカウントのプロビジョニング プロセスの今後のアップデートにも対応しています。

デバイスのプロビジョニングの前提条件

  • 企業 ID が作成され、EMM ID で登録され、企業の作成と登録で説明されているように ESA が設定されます。
  • ユーザーの企業 ID は EMM コンソールに認識されます。
  • ユーザーは、EMM コンソールで承認された認証情報(通常は会社のメール認証情報)を使用して、DPC アプリにログインできます。

プロファイル所有者モードを設定する

BYOD シナリオで使用されているデバイスに、プロファイル所有者の操作モードを個人用デバイスとしてプロビジョニングできます。

  1. ユーザーが手動で DPC を Google Play からダウンロードして起動します。
  2. DPC は、ACTION_PROVISION_MANAGED_PROFILE を使用して仕事用プロファイルをプロビジョニングします。
  3. 最後の設定手順を完了します。

デバイス所有者モードをセットアップする

新しいデバイスの初期設定時または出荷時の設定にリセットした後に、デバイス所有者モードをプロビジョニングする必要があります。これ以外の時点では、デバイス所有者モードをデバイスにプロビジョニングすることはできません。

デバイスのセットアップ時に、ユーザーはアカウントを追加するよう求められたら、DPC 固有の特別なトークンを入力します。トークンの形式は afw#DPC_IDENTIFIER です。ACME という名前の EMM の場合、afw#acme を使用すると ACME EMM のデフォルトの DPC がインストールされます。各 EMM がプロビジョニング プロセスで使用するには、特定の DPC 識別子を Google にリクエストする必要があります。

  1. ユーザーが新しいデバイスまたは出荷時設定にリセットしたデバイスの電源を入れると、設定ウィザードが起動します。
  2. アカウントを追加するよう求められたら、ユーザーは EMM の DPC を識別する afw#DPC_IDENTIFIER 形式の特別なトークンを入力します。
  3. 設定ウィザードは、トークンの DPC 識別子を使用して、一時的な Google アカウントをデバイスに追加します。この一時的なアカウントは、Google Play から EMM の DPC をダウンロードするためにのみ使用され、設定の最終手順で削除されます。
  4. DPC は ACTION_PROVISION_MANAGED_DEVICE を使用してデバイスをプロビジョニングします。
  5. 最後の設定手順を完了します。

すべての運用モード向けの最終設定手順

この手順は、プロファイル所有者モードまたはデバイス所有者モードを設定する最初の手順が完了した後にのみ行ってください。

  1. DPC は、DPC サポート ライブラリを初期化することにより、デバイスが managed Google Play アカウントをサポートできるようにします。

    AndroidForWorkAccountSupport androidForWorkAccountSupport =
      new AndroidForWorkAccountSupport(context, admin);
    androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
    

    デバイスでデバイス所有者モードをセットアップする場合、DPC をダウンロードするために追加された一時的な Google アカウントが削除されます。

  2. ユーザーは EMM 認証情報を使用して DPC にログインします。これらは通常、会社のメール認証情報です。

  3. DPC は、EMM コンソールから、認証された企業ユーザーの managed Google Play アカウントの認証情報をリクエストします。

  4. EMM コンソールにユーザーの Google Play userId がない場合は、Users.insert() を呼び出して新しいユーザーを作成します。デバイス所有者モードをプロビジョニングする場合は、デバイス アカウント(専用デバイスの導入の場合)またはユーザー アカウント(会社所有のデプロイの場合)を指定します。

  5. Devices.update を呼び出して、デバイスのポリシーを設定します。このポリシーは、managed Google Play アカウントをデバイスに追加する前に設定する必要があります。追加しないと、アカウントにアカウントを追加した後、短期間の間はポリシーが適用されません。

  6. EMM コンソールは、Users.generateAuthenticationToken() を呼び出して、userId のアカウント認証情報をリクエストします。この認証トークンの有効期限は短く、再利用できません。DPC は、トークンを使用してプログラムでアカウントを追加します(エンドユーザーにとって役に立ちません)。

  7. Google Play EMM API が認証トークンを EMM コンソールに返します。

  8. EMM コンソールが認証トークンを DPC に転送します。

  9. DPC は、次の方法で managed Google Play アカウントをデバイスに追加します。

    androidForWorkAccountSupport.addAndroidForWorkAccount(token,
      accountAddedCallback);
    

Google アカウントによる方法

DPC は、Google アカウントのプロビジョニング方法を使用して、デバイス所有者モードまたはプロファイル所有者モードを設定できます。Google アカウントのプロビジョニング方法では、ユーザーがデバイスの初期設定時に Google アカウントを追加した後、DPC がプロビジョニングの手順をユーザーに案内します。

ユーザーが Google アカウントの認証情報を入力すると、次のようになります。

  • Google 認証サーバーがユーザー アカウントを認証します。
  • 次に、認証サーバーがエンタープライズ サーバーと通信し、アカウントのドメインが Google Workspace ドメインまたは EMM マネージド ドメインとして登録されていることを確認します。
  • その場合、ドメインに関連付けられた DPC が Google Play から自動的にダウンロードされ、インストールされます。

プロファイル所有者モードを設定する

プロファイル所有者の操作モードは、デバイスの初期設定時、またはユーザーがアカウントを追加する際に [設定] > [アカウントを追加] を使用してプロビジョニングできます。

  1. アカウント認証は、ユーザーが設定ウィザードまたは [設定] > [アカウントを追加] から開始します。
  2. GMSCore は、ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE を使用して仕事用プロファイルのプロビジョニングを開始します。
  3. DPC はデバイスに自動的にダウンロードされ、ACTION_GET_PROVISIONING_MODE ハンドラを使用して起動され、仕事用プロファイルのプロビジョニングが DPC によってサポートされていることを確認します。
  4. このプラットフォームは仕事用プロファイルのプロビジョニングを行います。
  5. 仕事用プロファイルがプロビジョニングされると、DPC はブロードキャスト ACTION_PROFILE_PROVISIONING_COMPLETE を受信します。DPC の ACTION_ADMIN_POLICY_COMPLIANCE ハンドラが仕事用プロファイルで起動されます。仕事用プロファイルが作成されると、DPC は仕事用プロファイル内でも実行されます。DPC は、管理対象の Google アカウントにポリシーを push し、デバイスが不正使用状態になっていないことを確認し、ポリシーが適用されていること(パスワードの要求など)を検証します。
  6. 個人用プロファイルの DPC が自身を無効にするか、ユーザーが削除します。

デバイス所有者モード(COPE)の設定

新しいデバイスの初期設定時または出荷時の設定にリセットした後に、デバイス所有者モードをプロビジョニングする必要があります。現時点でデバイス所有者モードをデバイスに追加することはできません。

  1. アカウント認証は、ユーザーが設定ウィザードから開始します。
  2. GMSCore が、ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE を使用してデバイス所有者のプロビジョニングを開始します。 3. DPC が自動的にデバイスにダウンロードされ、GET_PROVISIONING_MODE ハンドラを使用して起動され、目的のプロビジョニング モードが選択されます。
  3. プラットフォームが、目的のプロビジョニング モードにデバイスをプロビジョニングします。
  4. デバイスがプロビジョニングされると、DPC はこれらのブロードキャストを受信し、DPC の ACTION_ADMIN_POLICY_COMPLIANCE ハンドラを起動します。
  5. DPC は Global.DEVICE_PROVISIONED の値を使用して、デバイスが新品または出荷時設定にリセット(プロビジョニングされていない)であることを確認します。
    • 0 未プロビジョニングです。
    • 1 プロビジョニング済み。
  6. DPC は、管理対象デバイスにポリシーをプッシュし、デバイスが不正使用状態になっていないことを確認して、ポリシーが適用されていること(パスワードを要求するなど)を確認することで、プロビジョニング プロセスを完了します。

Google アカウント メソッドの実装に関する考慮事項

  • DPC は、使用された起動インテントの特定のエクストラを探すことにより、Google アカウント認証フローを検出する必要があります(LaunchIntentUtil を参照)。

    • タイプ android.accounts.Account のアカウント - アカウントが設定ウィザードまたは から追加されたことを示します。この場合、デバイスまたはプロファイルを管理するには、起動済みの DPC が必要です。
    • ブール値の is_setup_wizard true の場合、設定ウィザードの完了前に設定ウィザードで DPC が起動しています。それ以外の場合は、 または別のフローから起動されます。

    Google アカウントのメソッドの一部として DPC が開始されたかどうかの確認は次のとおりです。

    boolean isSynchronousAuthLaunch(Intent launchIntent) {
      return launchIntent.hasExtra("is_setup_wizard");
    }
    
  • DPC は、設定が完了する前に finish() を呼び出すことはできません。また、DPC が startActivityForResult() で起動され、結果を待つため、ポジティブな結果コード(RESULT_OK など)も返します。

    DPC 設定フローが ACTION_PROVISION_* インテントの送信ポイントに達した場合、DPC は、プロビジョニング プロセスからの結果コードを受け取ってから finish() を呼び出す必要があります。ACTION_PROVISION_* インテントを起動するときは、startActivityForResult() コールバックと onActivityResult() コールバックを使用します。(例については、LaunchActivitySetupSyncAuthManagement をご覧ください)。

    設定プロセスは非同期である可能性があるため、DPC はプロビジョニングが成功したことを示す結果コード RESULT_OK を信頼できません。唯一の確実な方法は、プロビジョニングの成功時に DeviceAdminReceiver コールバックを使用することです。RESULT_CANCELED は、ユーザーが設定フローの同期部分でバックアウトし、DPC がこれに対応する必要があることを示します。

    この例では、DPC がプロビジョニングを起動し、アクティビティからの結果コードを待機します。

    Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE);
    startActivityForResult(intent, REQUEST_MANAGED_PROFILE);
    ...
    
    @Override
    public void onActivityResult(int req, int res, Intent i) {
        if (req == REQUEST_MANAGED_PROFILE) {
            if (res == Activity.RESULT_OK) {
                setResult(Activity.RESULT_OK);
                finish();
            } else {
                Toast.makeText(this, “Provisioning failed”,
                        Toast.LENGTH_SHORT).show();
            }
        }
    }
    
  • デバイスがすでにプロビジョニングされている場合、DPC はデバイス所有者モードを設定しようとしないでください(ProvisioningStateUtil.isDeviceProvisioned() を参照)。この例では、DPC はデバイスがプロビジョニングされているかどうかを確認します。

    public static boolean isDeviceProvisioned(Context context) {
    ContentResolver cr = context.getContentResolver();
        return
    Settings.Global.getInt(cr, DEVICE_PROVISIONED, 0) != 0;
    }
    
  • (省略可)DPC は、プロビジョニングの起動時に EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE エクストラを使用して、状態情報を DeviceAdminReceiver(プロファイル所有者の場合、仕事用プロファイル内で実行)に渡すことができます。TestDPC はこのエクストラを使用して、プロビジョニングの完了後に Google アカウントのフローに別のアクティビティ セットを入力します。詳しくは、DeviceAdminReceiver をご覧ください。

    public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver
    {
      @Override
      public void onProfileProvisioningComplete(Context context, Intent intent) {
        // Retrieve the admin extras bundle, which we can use to determine the original context for
        // Test DPC's launch.
        PersistableBundle extras = intent.getParcelableExtra(
                EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE);
        ...
    
  • 仕事用プロファイルを設定するには、DPC が追加したアカウントを新しい仕事用プロファイルに移行する必要があります。そのために、DPC は ACTION_PROVISION_MANAGED_PROFILE の起動インテントで指定されたアカウントを渡す必要があります。

  • DPC は、フローが行き詰まったとユーザーが考えないように、セットアップの終了時にアプリを終了するための明確な行動を促すフレーズ(終了ボタンなど)をユーザーに提供する必要があります。

  • DPC では、ユーザー エクスペリエンスがスムーズで統合的に感じられるように、設定ウィザードのテーマまたはレイアウト ライブラリを使用する必要があります。

NFC 方式

DPC は NFC プロビジョニング方式を使用してデバイス所有者モードを設定できます。NFC プロビジョニング方法(NFC タグ)では、初期ポリシーと、お客様がデバイス所有者のオペレーション モードを構成するために必要な Wi-Fi 構成、設定、プロビジョニングの詳細を含む NFC プログラマー アプリを作成します。パートナー様またはお客様が NFC プログラマー アプリを Android 搭載デバイスにインストールすると、そのデバイスがプログラマー デバイスになります。

デバイスをプロビジョニングするには、IT 管理者は新しいデバイスを箱から出して、プログラマー デバイスまたは NFC タグに突き当たります。バンプによりデバイスに構成が転送され、デバイスがインターネットに接続されて適切なポリシーと設定がダウンロードされます。その後、デバイスは DPC によって管理されます。

デバイスがプロビジョニングされると、しばらくの間、Google Play には、承認済みアプリやコレクションではなく、管理対象外のコンテンツが表示されます。この遅延は数分から 1 時間ほどかかることがあります。

NFC プログラマー アプリとプログラマー デバイスを作成する

Android 10 以前を搭載したデバイスでは、Android ビームを使用して NFC プロビジョニングを完了できます。

  1. NFC プログラマーのサンプルアプリをダウンロードします。追加なしでサンプルをそのまま使用することも、デフォルト値に合わせて変更することもできます。
  2. 選択したデバイスにプログラマー アプリをインストールします。
  3. NFC プログラマー アプリを起動し、com.example.android.apis の [Load Defaults] を選択します。(このテキストは、設定するデフォルト パラメータによって異なります)。

お客様のデバイスをプロビジョニングする

  1. 新しいデバイスまたは出荷時設定にリセットしたデバイスでプログラマー デバイスまたは NFC タグをバンプします。
  2. デバイスが、起動時に表示される最初の「ようこそ」画面に表示されたことを確認します。テキストはプログラマー アプリの Ready to send:{...} で指定されます。
  3. DPC が次の処理を行うまで待機します。
    1. デバイスを暗号化する
    2. CDMA(Code-Division Multiple Access)デバイスの場合: 電話のユーザー インターフェースが表示されているときに電話を有効にします(操作は必要ありません)。
    3. Wi-Fi 接続を設定します。
    4. com.example.android.apis の APK ファイルをダウンロードします。
    5. com.example.android.apis をインストールします。
    6. com.example.android.apis でサンプル デバイス管理をデバイス所有者として設定します。
    7. デバイス所有者が有効になると、成功時の「トースト」が表示されます。
  4. ホームページに戻ったら(設定ウィザードは自動的にスキップされます)、com.example.android.apis がデバイス所有者として設定されていることを確認します。
    1. [設定] > [セキュリティ] > [デバイス管理] で、Sample Device Admin を削除できないことを確認します。
    2. [設定] > [ユーザー] > [ユーザーとプロファイル] > [自分(所有者)] で、利用可能な唯一のアカウント「所有者」であることを確認します(1 つのデバイスに設定できるアクティブなデバイス所有者は一度に 1 つのみです)。

補足資料

高度な NFC では、さまざまなタグ技術の使用、NFC タグへの書き込み、フォアグラウンド ディスパッチなどのトピックについて説明しています。

DPC の手動インストール方法

DPC の手動インストール プロビジョニング方法を使用してプロファイル所有者モードを設定するには、ユーザーが Google Play から DPC をダウンロードしてインストールします。DPC の指示に沿って、ユーザーは管理対象の Google アカウントのプロファイル所有者を設定します。

DPC は、仕事用プロファイルの作成前または作成後に、管理対象の Google アカウントを追加できます。たとえば、DPC は、最初に管理対象の Google アカウントを求める代わりに、ユーザーの EMM 認証情報に基づいて仕事用プロファイルを作成できます。

プロファイル所有者モードを設定する

まず管理対象の Google アカウントを追加してください

  1. ユーザーが Google Play から DPC をダウンロードしてインストールします。
  2. DPC は、AccountManager.addAccount() を使用して仕事用プロファイルを作成する前に、管理対象の Google アカウントを追加します。
  3. DPC は個人用プロファイルでの実行を開始し、以下を使用して仕事用プロファイルの作成プロセスを開始します。
  4. 仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。仕事用プロファイルが作成されると、DPC は仕事用プロファイル内でも実行されます。仕事用プロファイルの DPC は、管理対象の Google アカウントにポリシーをプッシュし、デバイスが不正使用状態になっていないことを確認して、ポリシーが適用されていること(パスワードの要求など)を確認することで、プロビジョニング プロセスを完了します。
  5. 仕事用プロファイルがプロビジョニングされると、DPC はブロードキャスト ACTION_PROFILE_PROVISIONING_COMPLETE を受信します。
  6. 個人用プロファイルの DPC が自身を無効にするか、ユーザーが削除します。

まず仕事用プロファイルを作成してください

  1. ユーザーが Google Play から DPC をダウンロードしてインストールします。
  2. DPC は個人用プロファイルでの実行を開始し、以下を使用して仕事用プロファイルの作成プロセスを開始します。
  3. DPC は AccountManager.addAccount() を使用して、管理対象の Google アカウントを追加します。
  4. DPC はブロードキャスト ACTION_PROFILE_PROVISIONING_COMPLETE を受信し、EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE を読み取ります。
  5. 仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。仕事用プロファイルが作成されると、DPC は仕事用プロファイル内でも実行されます。仕事用プロファイルの DPC は、その管理対象の Google アカウントのポリシーをプッシュし、デバイスが不正使用状態になっていないことを確認して、ポリシーが適用されていること(パスワードを要求するなど)を確認することで、プロビジョニング プロセスを完了します。
  6. DPC は、DevicePolicyManager.setProfileEnabled() を使用して仕事用プロファイルを有効にします。
  7. 個人用プロファイルの DPC が自身を無効にするか、ユーザーが削除します。

  1. Android 5.1 の Google アカウントによる操作は、プロファイル所有者の操作モードのみをサポートしており、ユーザーは [設定] > [アカウントを追加] からのみ設定できます。