$30 off During Our Annual Pro Sale. View Details »

Managed Configurations - Enterprise向け設定機能を知る

Managed Configurations - Enterprise向け設定機能を知る

DeNA.apk #4

Yusaku Tanaka

March 02, 2023
Tweet

More Decks by Yusaku Tanaka

Other Decks in Technology

Transcript

  1. Managed Configurations
    Enterprise
    向けの設定機能を知る
    2023-03-02 DeNA.apk #4
    Yusaku Tanaka (@imsaku)

    View Slide

  2. About me
    Yusaku Tanaka (@imsaku)
    DeNA Co., Ltd.
    Android Enterprise
    にちょっとだけ詳しい
    https://g.dev/imsaku
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 2

    View Slide

  3. 今回話すこと
    Managed Configurations
    って何...

    サンプルコードとその説明
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 3

    View Slide

  4. Managed Configurations
    って
    ...

    管理された
    Android
    デバイス上の、
    Managed Configurations
    が実装されたアプリに対して、
    IT
    管理者が、
    設定値を配布できる機能。
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 4

    View Slide

  5. 管理された
    Android
    デバイス
    モバイルデバイスを管理するための製品・サービスが存在する
    MDM (Mobile Device Management)
    EMM (Enterprise Mobility Management)
    例) Google Workspace
    のエンドポイント管理機能
    ユースケース
    会社が所有しているデバイスを従業員に配布する
    従業員個人が所有しているデバイスを業務で利用する(BYOD

    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 5

    View Slide

  6. IT
    管理者
    企業の情報システム部門担当者など
    一般的に、MDM/EMM
    が提供するWeb
    上の管理画面からデバイス
    を管理する
    例)Google Workspace
    の管理コンソールから、デバイスのセキ
    ュリティポリシーを定めたり、業務で使用するアプリを自動イン
    ストールしたりする
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 6

    View Slide

  7. 設定値の配布
    Managed Configurations
    の機能そのもの
    例えば...
    ブラウザアプリで、従業員向けのページをまとめたブックマークフ
    ォルダを配布する
    業務用のアプリで、一部機能を有効化・無効化する
    例)Chrome
    https://chromeenterprise.google/policies/
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 7

    View Slide

  8. アプリ側がやること
    3
    つだけ。
    設定のスキーマをXML
    で定義する
    設定値を
    RestrictionsManager
    から取得する
    設定値の変更を
    BroadcastReceiver
    で検知する
    MDM/EMM
    側とはどうやってやり取りするの・・・?
    → Google Play
    が提供するAPI
    を通じて、MDM/EMM
    側がスキーマの
    取得や設定値の配布を行なってくれる。
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 8

    View Slide

  9. 設定のスキーマを定義する
    AndroidManifest.xml
    Managed Configurations
    の使用を宣言する。

    android:name="android.content.APP_RESTRICTIONS"
    android:resource="@xml/app_restrictions" />
    ...
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 9

    View Slide

  10. 設定のスキーマを定義する
    res/xml/app_restrictions.xml
    res/xml

    app_restrictions.xml
    を作成し、構成を定義する。


    android:key="my_feature_enabled"
    android:restrictionType="bool"
    android:defaultValue="false"
    android:title="@string/title_my_feature"
    android:description="@string/description_my_feature"/>

    ...
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 10

    View Slide

  11. 設定のスキーマを定義する
    app_restrictions.xml
    で使用する主な属性値
    Attribute Description
    android:key
    設定値を識別するKey
    android:restrictionType
    設定値の型
    android:defaultValue
    デフォルト値
    android:title MDM
    側に表示するタイトル
    android:description MDM
    側に表示する説明文
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 11

    View Slide

  12. 設定のスキーマを定義する
    android:restrictionType
    でサポートされている主な型
    Type Description
    bool true, false
    のbool

    string
    文字列
    integer int
    型の整数値
    choice
    単一選択のリスト
    multi-select
    複数選択可能なリスト
    bundle, bundle-array
    設定をネストするためのBundle
    やその配列
    Managed Configurations - Enterprise
    向けの設定機能を知る
    12

    View Slide

  13. 設定値を取得する
    設定値はGoogle Play services
    を介してAndroid
    デバイスに保存され

    アプリはシステムサービスの
    RestrictionsManager
    を使って、任意の
    タイミングで設定値を
    Bundle
    として受け取ることができる
    android:defaultValue

    Bundle
    に含まれているとは限らない
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 13

    View Slide

  14. 設定値を取得する
    val manager = activity.getSystemService(
    Context.RESTRICTIONS_SERVICE) as RestrictionsManager
    // applicationRestrictions
    はBundle?

    val restrictions = manager.applicationRestrictions ?: return
    // android:key
    を指定して設定値を取得する
    val myFeatureEnabled =
    if (restrictions.containsKey("my_feature_enabled")) {
    restrictions.getBoolean("my_feature_enabled")
    } else {
    defaultValue
    }
    //
    設定値を元にビジネスロジックを処理する
    doSomething(myFeatureEnabled)
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 14

    View Slide

  15. 設定値の変更を検知する
    アプリの実行中に設定値が変更された場合は、
    BroadcastReceiver
    で変更通知を受け取ることができる
    このとき
    BroadcastReceiver
    はmanifest-declared
    ではなく、
    context-registered
    である必要がある
    AndroidManifest.xml
    に宣言するのではなく、Context
    から動的
    に登録する必要がある
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 15

    View Slide

  16. 設定値の変更を検知する
    class RestrictionsReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
    //
    設定値の取得や設定変更に伴うビジネスロジックの処理
    }
    }
    val receiver = RestrictionsReceiver()
    val intentFilter = IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED)
    registerReceiver(receiver, intentFilter)
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 16

    View Slide

  17. より具体的な内容に興味のある人は
    ...
    Google
    のサンプルを利用してローカルで試すことができる
    1. TestDPC*1
    で管理されたAndroid
    デバイスをセットアップする
    Google Play
    ストアからインストール可能
    2. Managed Configurations
    のサンプルアプリ*2
    をインストール
    自分で同様のアプリを実装してもOK
    3. 2.
    でインストールしたアプリの設定をTestDPC
    で変更する
    *1: https://github.com/googlesamples/android-testdpc
    *2: https://github.com/android/enterprise-samples/tree/main/ManagedConfigurations
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 17

    View Slide

  18. まとめ
    MDM/EMM
    との併用を前提としたEnterprise
    特化の設定機能を実装
    できる
    設定のスキーマや実際の設定値はGoogle Play
    を介してAndroid
    デバ
    イスとMDM/EMM
    の間でやりとりされる
    アプリ側では、RestrictionsManager
    からBundle
    として設定値を取
    得したり、BroadcastReceiver
    で設定値の変更を受信したりできる
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 18

    View Slide

  19. 参考資料
    https://developer.android.com/work/managed-configurations
    https://developer.android.com/reference/android/content/Restrict
    ionsManager
    https://developer.android.com/reference/android/content/Restrict
    ionEntry
    https://github.com/android/enterprise-samples
    https://developers.google.com/android/management/managed-
    configurations-iframe
    Managed Configurations - Enterprise
    向けの設定機能を知る
    Yusaku Tanaka (@imsaku) 19

    View Slide

  20. Managed Configurations
    Enterprise
    向けの設定機能を知る
    2023-03-02 DeNA.apk #4
    Yusaku Tanaka (@imsaku)

    View Slide