EMM にアプリのフィードバックを送信する

企業向けモバイル管理(EMM)プロバイダは、Android デバイスとそのデバイスにインストールされているアプリを管理するためのソリューションを提供します。通常、こうしたソリューションは、EMM コンソールと呼ばれるウェブ コンソールとして利用できます。IT 管理者は EMM コンソールを使用して、組織に代わってデバイスとアプリの管理タスクを行います。

企業組織をターゲットとするアプリは、主要なアプリの状態の形式で EMM にフィードバックを送信できます。EMM は API を使用して、キー付きのアプリ状態データを取得し、EMM コンソールに表示できます。IT 管理者は、この通信チャネルを使用して、管理対象のデバイスにインストールされているアプリのステータスに関するフィードバックを受け取ることができます。

たとえば、メール クライアント アプリは、キー付きのアプリの状態を使用して、アカウントが正常に構成されていることを確認したり、同期エラーが発生したときに報告したり、アプリ デベロッパーが適切だと判断したその他のステータス更新を送信したりできます。

キー付きのアプリの状態のコンポーネント

鍵付きのアプリの状態は、次のものから構成されます。

  • キー: アプリの状態の一意の識別子。最大 100 文字。
  • メッセージ: アプリの状態を説明するメッセージ(省略可)。最大 1,000 文字。注: 通常、メッセージはこれより大幅に短くする必要があります。
  • データ: 機械で読み取り可能な値。これは EMM 用で、値に基づいて IT 管理者がアラートやフィルタを設定するために使用します。たとえば、IT 管理者はデータ フィールドが battery_percentage < 10 の場合にアラートを設定できます。最大 1,000 文字。
  • 重大度: アプリの状態の重大度。指定できる値は SEVERITY_ERRORSEVERITY_INFO(デフォルト)です。組織が修正のために対処する必要がある真正なエラー条件の場合のみ、重大度を SEVERITY_ERROR に設定してください。
  • タイムスタンプ: 鍵付きのアプリ状態を設定すると、エポックからのミリ秒単位のタイムスタンプ付きで自動的に送信されます。

管理対象設定に関するフィードバックを送信

アプリが管理対象設定をサポートしている場合は、設定した構成のステータスを IT 管理者に通知する方法として、キー付きのアプリの状態を送信することをおすすめします。次のサンプル ワークフローは、これを行う 1 つの方法です。

管理対象設定におけるキー付きのアプリの状態
  1. IT 管理者は EMM コンソールを使用して、完全管理対象デバイスまたは仕事用プロファイル内にインストールされたアプリの管理対象構成の設定と送信を行えます。 例:
    • 音量: 「50%」
    • 通貨: 「USDD」
  2. アプリが構成の適用を試みます。ボリュームが 50% に正常に設定されましたが、通貨コードが無効なため適用できません。
  3. 各構成のステータスに基づいて、アプリはキー付きのアプリの状態を設定します。キーが設定されたアプリの状態には、一意のキーと、状態の詳細を含むメッセージが含まれます。可能であれば、管理対象設定キーを照合することをおすすめします。 次に例を示します。
    キー メッセージ 重大度 タイムスタンプ
    volume 50% に設定 SEVERITY_INFO 1554461130
    currency 通貨「USDD」を認識できません SEVERITY_ERROR 1554461130
  4. EMM プロバイダは、アプリによって設定された鍵付きのアプリの状態を取得し、EMM コンソールに表示します。次に例を示します。
    設定 ステータス 必要な対応 時間
    音量 50% に設定 × 2019 年 4 月 5 日、午前 10:45:30
    通貨 エラー: 通貨「USDD」を認識できません。 2019 年 4 月 5 日、午前 10:45:30

    また、EMM プロバイダは SEVERITY_ERROR を使用して受信した状態をすべて IT 管理者に明示的にフラグする必要があります。IT 管理者は EMM コンソールで情報を確認し、設定したエラーを解決するための措置を講じることができます。

解決されたエラーの報告

エラーが解決したら、すぐにフォローアップのアプリの状態を送信して、EMM にエラー メッセージが無期限に表示されないようにします。このフォローアップ状態には次のものが含まれます。

  • 最初のエラー メッセージと同じキー
  • 重大度 SEVERITY_INFO。状態はエラー状態ではなく、組織がそれ以上の措置を講じる必要はありません。

キー付きのアプリの状態のサポートをアプリに追加する

主なアプリの状態をアプリに統合する手順は次のとおりです。

ステップ 1: Google の Maven リポジトリを settings.gradle ファイルに追加する

以下に示すように、プロジェクトの settings.gradle ファイルに Google の Maven リポジトリをリポジトリの場所として追加します。

dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
       google()
  }
}

ステップ 2: モジュール レベルの build.gradle ファイルにエンタープライズ フィードバック ライブラリを追加する

モジュール レベルの build.gradle ファイルに次の依存関係を追加します。

dependencies {
    implementation 'androidx.enterprise:enterprise-feedback:1.0.0'
}

ステップ 3: KeyedAppStatesReporter のインスタンスを取得する

onCreate() メソッドで、KeyedAppStatesReporter のインスタンスを取得して保存します。これにより、アプリと EMM プロバイダ間の通信チャネルが可能になります。

Kotlin

val reporter = KeyedAppStatesReporter.create(context)

Java

KeyedAppStatesReporter reporter = KeyedAppStatesReporter.create(context);

ステップ 4: キー付きのアプリの状態のコレクションを作成する

鍵付きのアプリ状態を作成する場合は、以下のベスト プラクティスに従ってください。

  • 状態には個人を特定できる情報(PII)を含めないでください。キー付きのアプリの状態はセンシティブ データには適していません。
  • キー付きのアプリの状態を、MAX_KEY_LENGTHMAX_MESSAGE_LENGTHMAX_DATA_LENGTH で定義された制限内に収めます。
  • 1 回の setStates または setStatesImmediate 呼び出しでは、合計で 300 KB に制限されます(1 日に保存できる総数の約 1/3)。これを超えると、未定義の動作が発生します。
  • 状態の重大度を SEVERITY_ERROR に設定するのは、組織が修正に向けて対処する必要がある条件が存在する場合のみです。
  • エラーを含むアプリの状態を送信する際は、EMM がコンソールでエラーの報告を停止できるように、エラーが解決したらフォローアップ状態も送信するようにしてください。
  • フォローアップ状態では、エラーを返した初期状態と同じキーを使用し、重大度を SEVERITY_INFO に設定します。

以下のスニペットは、キーを持つアプリの状態のコレクションを作成します。

Kotlin

    val states = hashSetOf(KeyedAppState.builder()
             .setKey("key")
             .setSeverity(KeyedAppState.SEVERITY_INFO)
             .setMessage("message")
             .setData("data")
             .build())
    

Java

    Collection states = new HashSet<>();
    states.add(KeyedAppState.builder()
     .setKey("key")
     .setSeverity(KeyedAppState.SEVERITY_INFO)
     .setMessage("message")
     .setData("data")
     .build());
    

ステップ 5: キー付きのアプリの状態を設定する

setStates() メソッドは、Play ストア アプリ(パッケージ名: com.android.vending)がデバイスにインストールされている場合、およびデバイスまたは仕事用プロファイルの管理者に、キー付きのアプリの状態をすぐに送信します。

Kotlin

keyedAppStatesReporter.setStates(states)

Java

keyedAppStatesReporter.setStates(states);

キー付きのアプリの状態をテストする

テスト手順について詳しくは、アプリのフィードバックをテストするをご覧ください。