Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Managed Configurations - Enterprise向け設定機能を知る
Search
Yusaku Tanaka
March 02, 2023
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Managed Configurations - Enterprise向け設定機能を知る
DeNA.apk #4
Yusaku Tanaka
March 02, 2023
More Decks by Yusaku Tanaka
See All by Yusaku Tanaka
ビジネス向けアプリを開発するときに知っておくべきAndroid Enterpriseの世界
imsaku
1
4k
Jetpack Compose Pagerを触ってみよう
imsaku
0
1.8k
Other Decks in Technology
See All in Technology
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
260
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
230
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
350
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
130
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
140
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
1
490
omasushiというライブラリを作った
polidog
PRO
0
190
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
160
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
300
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
370
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
25k
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Navigating Weather and Climate Data
rabernat
0
510
The Limits of Empathy - UXLibs8
cassininazir
1
650
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Odyssey Design
rkendrick25
PRO
2
800
We Are The Robots
honzajavorek
0
360
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Deep Space Network (abreviated)
tonyrice
0
300
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Building Applications with DynamoDB
mza
96
7.2k
Transcript
Managed Configurations Enterprise 向けの設定機能を知る 2023-03-02 DeNA.apk #4 Yusaku Tanaka (@imsaku)
About me Yusaku Tanaka (@imsaku) DeNA Co., Ltd. Android Enterprise
にちょっとだけ詳しい https://g.dev/imsaku Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 2
今回話すこと Managed Configurations って何... ? サンプルコードとその説明 Managed Configurations - Enterprise
向けの設定機能を知る Yusaku Tanaka (@imsaku) 3
Managed Configurations って ... ? 管理された Android デバイス上の、 Managed Configurations
が実装されたアプリに対して、 IT 管理者が、 設定値を配布できる機能。 Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 4
管理された Android デバイス モバイルデバイスを管理するための製品・サービスが存在する MDM (Mobile Device Management) EMM (Enterprise
Mobility Management) 例) Google Workspace のエンドポイント管理機能 ユースケース 会社が所有しているデバイスを従業員に配布する 従業員個人が所有しているデバイスを業務で利用する(BYOD ) Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 5
IT 管理者 企業の情報システム部門担当者など 一般的に、MDM/EMM が提供するWeb 上の管理画面からデバイス を管理する 例)Google Workspace の管理コンソールから、デバイスのセキ
ュリティポリシーを定めたり、業務で使用するアプリを自動イン ストールしたりする Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 6
設定値の配布 Managed Configurations の機能そのもの 例えば... ブラウザアプリで、従業員向けのページをまとめたブックマークフ ォルダを配布する 業務用のアプリで、一部機能を有効化・無効化する 例)Chrome https://chromeenterprise.google/policies/
Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 7
アプリ側がやること 3 つだけ。 設定のスキーマをXML で定義する 設定値を RestrictionsManager から取得する 設定値の変更を BroadcastReceiver
で検知する MDM/EMM 側とはどうやってやり取りするの・・・? → Google Play が提供するAPI を通じて、MDM/EMM 側がスキーマの 取得や設定値の配布を行なってくれる。 Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 8
設定のスキーマを定義する AndroidManifest.xml Managed Configurations の使用を宣言する。 <application> <meta-data android:name="android.content.APP_RESTRICTIONS" android:resource="@xml/app_restrictions" />
... Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 9
設定のスキーマを定義する res/xml/app_restrictions.xml res/xml に app_restrictions.xml を作成し、構成を定義する。 <?xml version="1.0" encoding="utf-8"?> <restrictions
xmlns:android="http://schemas.android.com/apk/res/android"> <restriction android:key="my_feature_enabled" android:restrictionType="bool" android:defaultValue="false" android:title="@string/title_my_feature" android:description="@string/description_my_feature"/> <restriction ... /> ... Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 10
設定のスキーマを定義する 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
設定のスキーマを定義する android:restrictionType でサポートされている主な型 Type Description bool true, false のbool 値
string 文字列 integer int 型の整数値 choice 単一選択のリスト multi-select 複数選択可能なリスト bundle, bundle-array 設定をネストするためのBundle やその配列 Managed Configurations - Enterprise 向けの設定機能を知る 12
設定値を取得する 設定値はGoogle Play services を介してAndroid デバイスに保存され る アプリはシステムサービスの RestrictionsManager を使って、任意の
タイミングで設定値を Bundle として受け取ることができる android:defaultValue が Bundle に含まれているとは限らない Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 13
設定値を取得する 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
設定値の変更を検知する アプリの実行中に設定値が変更された場合は、 BroadcastReceiver で変更通知を受け取ることができる このとき BroadcastReceiver はmanifest-declared ではなく、 context-registered である必要がある
AndroidManifest.xml に宣言するのではなく、Context から動的 に登録する必要がある Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 15
設定値の変更を検知する 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
より具体的な内容に興味のある人は ... 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
まとめ MDM/EMM との併用を前提としたEnterprise 特化の設定機能を実装 できる 設定のスキーマや実際の設定値はGoogle Play を介してAndroid デバ イスとMDM/EMM
の間でやりとりされる アプリ側では、RestrictionsManager からBundle として設定値を取 得したり、BroadcastReceiver で設定値の変更を受信したりできる Managed Configurations - Enterprise 向けの設定機能を知る Yusaku Tanaka (@imsaku) 18
参考資料 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
Managed Configurations Enterprise 向けの設定機能を知る 2023-03-02 DeNA.apk #4 Yusaku Tanaka (@imsaku)