Если вы администратор в компании, где есть внутреннее мобильное приложение, неважно для чего – будь то обычный мессенджер или почта, или что-то особенное наподобие сканера штрих-кодов – рано или поздно перед вами встанет задача удаленной настройки и менеджмента приложений. Прописать конкретный id или адрес сервера во всех телефонах можно при помощи костылей, но есть и готовое решение – де-факто уже стандарт, который можно использовать совместно с одной из существующих EMM/UEM-платформ (Enterprise Mobile Management/Unified Endpoint Management).
В этой статье мы решили дать инструкцию, как сделать ваше Android-приложение конфигурируемым, если вы – его разработчик. То есть: что конкретно нужно изменить в вашем приложении, чтобы выполнить потребности корпоративной аудитории. А еще мы описали всю работу администратора на примере платформы Knox Manage.
![](https://habrastorage.org/r/w1560/webt/mg/z3/zs/mgz3zsezmqqdj25bhnsv24fghho.png)
В интервью с коллегами из НИИ СОКБ (Научно-испытательный институт систем обеспечения комплексной безопасности) мы сошлись на мнении, что современную корпоративную мобильную инфраструктуру уже нельзя представить без централизованной системы управления.
Например, в швейцарской железнодорожной компании SBB каждый из 30 000 сотрудников получает кастомизированный под рабочие задачи телефон – там не только почта и мессенджер, но и, к примеру, отправка сообщений о неисправностях. Возлагать на сотрудника задачу настройки всей этой периферии не только накладно в человеко-часах, но и чревато возможными ошибками в процессе. А еще в ряде случаев – например, при появлении сбоев – бывает проще полностью перепрошить и заново инициализировать телефон, чем искать ошибку. Поэтому, правильно выбранное решение для корпоративного приложения – значительно облегчает жизнь IТ администратора компании.
Обычно, при внедрении централизованных систем мы сталкиваемся с двумя задачами:
В качестве решения второй задачи существует механизм AppConfig, это не инициатива какой-то единичной компании, а действующая конвенция нескольких вендоров. Его суть кратко такова: разработчик реализует в своем мобильном приложении – почте, мессенджере, клиенте видеосвязи и т.д. – поддержку управляемых конфигураций (Managed Configurations), настраиваемых под конкретного пользователя. Разработчик решает, какие именно параметры в приложении можно задавать извне (идентификатор, имя пользователя, адрес сервера). Через корпоративный Google Play эти параметры попадают в EMM-систему. А она уже позволяет создавать управляемые конфигурации и удаленно назначать их определенным устройствам и пользователям.
Чтобы узнать, реализован ли такой функционал в конкретном приложении:
![](https://habrastorage.org/r/w1560/webt/up/vs/kl/upvsklaoed65xl6wv9fqnj85ky0.png)
Общий процесс выглядит так:
![](https://habrastorage.org/r/w1560/webt/lt/v5/-o/ltv5-os86avv4xb72cqmhnhwmhu.png)
Процесс адаптации корпоративного мобильного приложения к AppConfig
Предположим, что вам требуется удаленно ввести адрес и имя пользователя в почтовом клиенте. На примере Samsung Knox Manage интерфейс настройки этих параметров с помощью управляемой конфигурации будет выглядеть так:
![](https://habrastorage.org/r/w1560/webt/vf/4-/wp/vf4-wp1b_wilz15rcbyjnmgfmb4.png)
Для поля Email address вводим $emailaddress$, а для имени пользователя User name задаем $username$ (эти переменные будут подставляться динамически, в зависимости от конкретного пользователя).
Предположим, что мы разрабатываем мобильное приложение, в котором настраиваемый параметр – адрес сервера. Согласно рекомендациям Google, разработчик должен:
В результате этой несложной доработки, после публикации приложения в корпоративном Google Play, вы сможете получать настраиваемую конфигурацию с сервера:
![](https://habrastorage.org/r/w1560/webt/jv/t_/cr/jvt_crgzbip9fwdh5k_ucfqo0wc.png)
![](https://habrastorage.org/r/w1560/webt/cv/lo/im/cvloimch_ixslc_nyvcgzh9nh8u.png)
Приложение до и после получения конфигурации с сервера
Чтобы задать управляющие конфигурации, администратору нужно добавить само приложение через Knox Manage (KM) из корпоративного магазина Google Play, либо загрузить его со своего компьютера, как Managed Google Play Private (тогда публикация в корпоративный Google Play необязательна). Для задания новой конфигурации:
Если приложение запущено, и разработчик корректно реализовал поддержку AppConfig, то приложение получит новый адрес сервера, заданный в консоли KM.
![](https://habrastorage.org/r/w1560/webt/cv/lo/im/cvloimch_ixslc_nyvcgzh9nh8u.png)
Приложение с введенным через консоль KM адресом сервера
В какой-то момент разработчики задумались: а что, если мы хотим настраивать не только приложения, но и параметры самого устройства аналогичным способом? OEMConfig — это новый стандарт для отправки конфигураций приложениям, написанным производителями устройств. Отправка производится посредством той же самой схемы в XML-формате. Этому стандарту следуют изготовители оборудования Android, что позволяет предоставить администраторам дополнительные возможности управления устройством. Так, на смартфонах Samsung с поддержкой Knox существует решение — Knox Service Plugin (KSP), его можно загрузить из Google Play. Но об этом мы поговорим в другой раз.
Дополнительные источники по теме:
Автор: Павел Лепеев,
Engineer, B2B Pre/Post Sales
Business Development Team
Samsung R&D Institute Russia
В этой статье мы решили дать инструкцию, как сделать ваше Android-приложение конфигурируемым, если вы – его разработчик. То есть: что конкретно нужно изменить в вашем приложении, чтобы выполнить потребности корпоративной аудитории. А еще мы описали всю работу администратора на примере платформы Knox Manage.
![](https://habrastorage.org/webt/mg/z3/zs/mgz3zsezmqqdj25bhnsv24fghho.png)
Постановка задачи
В интервью с коллегами из НИИ СОКБ (Научно-испытательный институт систем обеспечения комплексной безопасности) мы сошлись на мнении, что современную корпоративную мобильную инфраструктуру уже нельзя представить без централизованной системы управления.
Например, в швейцарской железнодорожной компании SBB каждый из 30 000 сотрудников получает кастомизированный под рабочие задачи телефон – там не только почта и мессенджер, но и, к примеру, отправка сообщений о неисправностях. Возлагать на сотрудника задачу настройки всей этой периферии не только накладно в человеко-часах, но и чревато возможными ошибками в процессе. А еще в ряде случаев – например, при появлении сбоев – бывает проще полностью перепрошить и заново инициализировать телефон, чем искать ошибку. Поэтому, правильно выбранное решение для корпоративного приложения – значительно облегчает жизнь IТ администратора компании.
Обычно, при внедрении централизованных систем мы сталкиваемся с двумя задачами:
- Первичное подключение устройства к системе. Тут всё достаточно просто, уже давно существуют стандартные инструменты для этого: Knox Mobile Enrollment, Android Zero Touch и Android Enterprise Enrollment (EMM-токен, QR-коды и пр.)
- Первичная настройка необходимых корпоративных приложений. Этот момент гораздо сложнее, так как у разных приложений совершенно разные параметры и настройки, и знать их все заранее невозможно
Общая схема решения
В качестве решения второй задачи существует механизм AppConfig, это не инициатива какой-то единичной компании, а действующая конвенция нескольких вендоров. Его суть кратко такова: разработчик реализует в своем мобильном приложении – почте, мессенджере, клиенте видеосвязи и т.д. – поддержку управляемых конфигураций (Managed Configurations), настраиваемых под конкретного пользователя. Разработчик решает, какие именно параметры в приложении можно задавать извне (идентификатор, имя пользователя, адрес сервера). Через корпоративный Google Play эти параметры попадают в EMM-систему. А она уже позволяет создавать управляемые конфигурации и удаленно назначать их определенным устройствам и пользователям.
Чтобы узнать, реализован ли такой функционал в конкретном приложении:
- Перейдите в корпоративный Google Play.
- Найдите нужное приложение.
- Если оно поддерживает управляемые конфигурации, то под названием увидите значок «Это приложение можно настроить удаленно»:
![](https://habrastorage.org/webt/up/vs/kl/upvsklaoed65xl6wv9fqnj85ky0.png)
Общий процесс выглядит так:
- Разработчик добавляет поддержку управляемых конфигураций в свое приложение. В файле схемы XML он указывает параметры, настраиваемые удаленно, и в коде приложения обеспечивает развертывание этих параметров. Затем выкладывает приложение в корпоративный Google Play.
- EMM-система предоставляет интерфейс для администратора, через который XML-схема извлекается из приложения в Google Play при помощи iframe.
- Администратор вводит значения параметров, которые должны оказаться на корпоративных устройствах. После этого EMM-система передает конфигурацию в Google Play.
- Google Play обновляет приложение на всех корпоративных устройствах в соответствии с новой конфигурацией.
![](https://habrastorage.org/webt/lt/v5/-o/ltv5-os86avv4xb72cqmhnhwmhu.png)
Процесс адаптации корпоративного мобильного приложения к AppConfig
Предположим, что вам требуется удаленно ввести адрес и имя пользователя в почтовом клиенте. На примере Samsung Knox Manage интерфейс настройки этих параметров с помощью управляемой конфигурации будет выглядеть так:
![](https://habrastorage.org/webt/vf/4-/wp/vf4-wp1b_wilz15rcbyjnmgfmb4.png)
Для поля Email address вводим $emailaddress$, а для имени пользователя User name задаем $username$ (эти переменные будут подставляться динамически, в зависимости от конкретного пользователя).
Как разработчику добавить поддержку AppConfig в свое приложение?
Предположим, что мы разрабатываем мобильное приложение, в котором настраиваемый параметр – адрес сервера. Согласно рекомендациям Google, разработчик должен:
- Найти файл ресурсов XML, который обычно находится в папке проекта res/xml. В нем информация о всех настраиваемых параметрах, которая потом попадает в EMM-систему через Google Play APIs.
<?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android="http://schemas.android.com/apk/res/android"> <restriction android:key="address" android:title="@string/title" android:restrictionType="string" android:description="@string/description" android:defaultValue="sample address" /> </restrictions>
- Явно указать файл app_restrictions.xml в манифесте вашего приложения внутри тега application.
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="android.content.APP_RESTRICTIONS" android:resource="@xml/app_restrictions" />
- Реализовать обработку события ACTION_APPLICATION_RESTRICTIONS_CHANGED в коде приложения. Это шаг гарантирует, что приложение получит новое значение, определенное администратором.
IntentFilter restrictionFilter = new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED); BroadcastReceiver restrictionReciever = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle appRestrictions = restrictionsManager.getApplicationRestrictions(); /* Fetch the values of managed application configuration from this bundle and take action in your app accordingly. */ } };
В результате этой несложной доработки, после публикации приложения в корпоративном Google Play, вы сможете получать настраиваемую конфигурацию с сервера:
![](https://habrastorage.org/webt/jv/t_/cr/jvt_crgzbip9fwdh5k_ucfqo0wc.png)
![](https://habrastorage.org/webt/cv/lo/im/cvloimch_ixslc_nyvcgzh9nh8u.png)
Приложение до и после получения конфигурации с сервера
Как администратору сконфигурировать приложение через консоль Knox Manage?
Чтобы задать управляющие конфигурации, администратору нужно добавить само приложение через Knox Manage (KM) из корпоративного магазина Google Play, либо загрузить его со своего компьютера, как Managed Google Play Private (тогда публикация в корпоративный Google Play необязательна). Для задания новой конфигурации:
- В KM открываем вкладку Group, выбираем группу, привязанную к вашему устройству и нажимаем кнопку Application
- Теперь выбираем ваше приложение и нажимаем Assign
- В качестве Target Device выбираем Android Enterprise. Нажимаем на кнопку Set Configuration.
- Если вы все сделали правильно и ваше приложение имеет поддержку AppConfig, то KM заполнит нужные параметры значениями. Просто вводим адрес сервера (не забываем ввести имя конфигурации) и нажимаем кнопку Save.
- Нажимаем кнопку Assign, чтобы загрузить новую конфигурацию на устройство.
- Нажимаем OK для подтверждения.
Если приложение запущено, и разработчик корректно реализовал поддержку AppConfig, то приложение получит новый адрес сервера, заданный в консоли KM.
![](https://habrastorage.org/webt/cv/lo/im/cvloimch_ixslc_nyvcgzh9nh8u.png)
Приложение с введенным через консоль KM адресом сервера
Конфигурируем не только приложения, но и само устройство
В какой-то момент разработчики задумались: а что, если мы хотим настраивать не только приложения, но и параметры самого устройства аналогичным способом? OEMConfig — это новый стандарт для отправки конфигураций приложениям, написанным производителями устройств. Отправка производится посредством той же самой схемы в XML-формате. Этому стандарту следуют изготовители оборудования Android, что позволяет предоставить администраторам дополнительные возможности управления устройством. Так, на смартфонах Samsung с поддержкой Knox существует решение — Knox Service Plugin (KSP), его можно загрузить из Google Play. Но об этом мы поговорим в другой раз.
Итог
- Используйте AppConfig для поддержки управляемых конфигураций вашими приложениями. Это довольно просто реализовать, а главное — может быть реально полезным.
- Cоздавайте новую конфигурацию и отправляйте ее на устройства большого числа пользователей при помощи EMM-системы (в нашем примере — Knox Manage).
- Как можно меньше «костылей», пользуйтесь готовыми решениями и стандартными способами!
Дополнительные источники по теме:
- https://docs.samsungknox.com/admin/uem/km-configure-appconfig.htm
- https://docs.samsungknox.com/dev/managed-configurations/introduction-to-managed-configurations.htm
- https://developer.android.com/work/managed-configurations
- https://www.samsungknox.com/en/solutions/it-solutions/knox-manage
- https://www.appconfig.org/android/
- https://docs.samsungknox.com/admin/knox-service-plugin/welcome.htm
Автор: Павел Лепеев,
Engineer, B2B Pre/Post Sales
Business Development Team
Samsung R&D Institute Russia