Руководство для разработчиков

Корпоративные функции Android предоставляют организациям безопасную, гибкую и унифицированную мобильную платформу Android, объединяющую устройства, приложения и средства управления. Приложения Android по умолчанию совместимы с корпоративными функциями Android. Однако есть дополнительные функции, которые вы можете использовать, чтобы ваше приложение лучше работало на управляемых устройствах Android:

  • Совместимость с рабочим профилем . Измените приложение Android, чтобы оно лучше работало на управляемом устройстве.
  • Управляемые конфигурации . Измените свое приложение, чтобы предоставить ИТ-администраторам возможность указывать пользовательские настройки для ваших приложений.
  • Выделенные устройства. Оптимизируйте свое приложение, чтобы его можно было развернуть на устройстве Android в качестве киоска.
  • Единый вход (SSO) . Упростите процесс входа пользователей в различные приложения на управляемом устройстве Android.

Предварительные условия

  1. Вы создали приложение для Android.
  2. Вы готовы изменить свое приложение так, чтобы оно лучше подходило организациям.
  3. Минимальная версия: Android 5.0 Lollipop. Рекомендуемая версия: Android 6.0 Marshmallow и более поздние версии.

Примечание. Корпоративные функции Android встроены в большинство устройств Android 5.0; однако Android 6.0 и более поздних версий предлагает дополнительные функции, особенно в отношении выделенных устройств.

Рабочие профили

Вы можете управлять бизнес-данными и приложениями пользователя через рабочий профиль. Рабочий профиль – это управляемый корпоративный профиль, связанный с основной учетной записью пользователя на устройстве Android. Рабочий профиль надежно изолирует рабочие приложения и данные от личных приложений и данных. Этот рабочий профиль находится в отдельном контейнере от личного профиля, которым управляет ваш пользователь. Эти отдельные профили позволяют организациям управлять важными для них бизнес-данными, но оставлять все остальное на устройстве пользователя под его контролем. Подробное описание лучших практик можно найти в руководстве по рабочим профилям . Обзор этих передовых практик смотрите ниже.

Ключевые особенности рабочего профиля

  • Отдельный и безопасный профиль
  • Управление Google Play для распространения приложений.
  • Отдельные рабочие приложения со значком
  • Возможности управления только профилями, контролируемые администратором

Преимущества рабочего профиля на Android 5.0+

  • Полное шифрование устройства
  • Один пакет приложений Android (APK) для обоих профилей, если на устройстве есть личный и рабочий профили.
  • Контроллер политики устройств (DPC) ограничен рабочим профилем.
  • Администрирование устройств через класс DevicePolicyManager .

Рекомендации по рабочим профилям

Предотвратить сбой намерений между профилями

Трудно понять, какие намерения могут пересекаться между профилями, а какие блокируются. Единственный способ узнать наверняка – провести тестирование. Прежде чем ваше приложение начнет действие, вы должны убедиться, что запрос разрешен, вызвав Intent.resolveActivity() .

  • Если он возвращает null , запрос не разрешается.
  • Если он что-то возвращает, это показывает, что намерение разрешено и его можно безопасно отправлять.

Примечание . Подробные инструкции по тестированию см. в разделе «Предотвращение неудачных намерений» .

Делитесь файлами между профилями

Некоторые разработчики используют URI для обозначения путей к файлам в Android. Однако, поскольку при наличии рабочего профиля существуют отдельные файловые системы, мы рекомендуем:

Использовать:
URI контента
  • URI контента содержат полномочия, путь и идентификатор для определенного файла. Вы можете сгенерировать это, используя подкласс FileProvider . Узнать больше
  • Делитесь и предоставляйте разрешения на доступ к URI контента с помощью намерения. Разрешения можно передавать только через границу профиля с помощью намерений. Если вы предоставляете другому приложению права доступа к вашему файлу с помощью Context.grantUriPermission() , они предоставляются только этому приложению в том же профиле.
Не используйте:
URI файла
  • Содержит абсолютный путь к файлу в хранилище устройства.
  • URI пути к файлу, действительный для одного профиля, недействителен для другого.
  • Если вы прикрепите URI файла к намерению, обработчик не сможет получить доступ к файлу в другом профиле.

Следующие шаги : как только ваше приложение будет поддерживать управляемые профили, протестируйте его в рабочем профиле. См. Проверка приложения .

Реализация управляемых конфигураций

Управляемые конфигурации — это набор инструкций, которые ИТ-администраторы могут использовать для управления мобильными устройствами своих пользователей определенным образом. Эти инструкции универсальны и подходят для любого EMM, позволяя администраторам удаленно настраивать приложения на телефонах своих пользователей.

Если вы разрабатываете приложения для бизнеса или правительства, вам может потребоваться удовлетворить специфический набор требований вашей отрасли. Используя управляемые конфигурации, ИТ-администратор может удаленно задавать настройки и применять политики для приложений Android своих пользователей; например:

  • Настройте, может ли приложение синхронизировать данные через сотовую сеть/3G или только через Wi-Fi.
  • Разрешить или заблокировать URL-адреса в веб-браузере
  • Настройка параметров электронной почты приложения
  • Включить или отключить печать
  • Управление закладками

Рекомендации по реализации управляемых конфигураций

Руководство по настройке управляемых конфигураций — это ключевой источник информации о том, как создавать и развертывать управляемые конфигурации. После ознакомления с этой документацией ознакомьтесь с дополнительными рекомендациями ниже.

При первом запуске приложения

Как только вы запустите приложение, вы сможете увидеть, установлены ли уже управляемые конфигурации для этого приложения в onStart() или onResume() . Кроме того, вы можете узнать, является ли ваше приложение управляемым или неуправляемым. Например, если getApplicationRestrictions() возвращает:

  • Набор ограничений для конкретного приложения . Управляемые конфигурации можно настроить автоматически (без ввода данных пользователем).
  • Пустой пакет — ваше приложение ведет себя так, как будто оно неуправляемое (например, как приложение ведет себя в личном профиле).
  • Пакет с одной парой «ключ-значение», где для KEY_RESTRICTIONS_PENDING установлено значение true — ваше приложение находится под управлением, но DPC настроен неправильно. Вам следует заблокировать этого пользователя в своем приложении и направить его к его ИТ-администратору.

Прослушивайте изменения в управляемых конфигурациях

ИТ-администраторы могут в любое время изменить управляемые конфигурации и политики, которые они хотят применить к своим пользователям. По этой причине мы рекомендуем вам убедиться, что ваше приложение может принимать новые ограничения для вашей управляемой конфигурации следующим образом:

  • Получение ограничений при запуске. Ваше приложение должно вызывать getApplicationRestrictions() в onStart() и onResume() и сравнивать их со старыми ограничениями, чтобы определить, требуются ли изменения.
  • Слушайте во время работы — динамически регистрируйте ACTION_APPLICATION_RESTRICTIONS_CHANGED в ваших текущих действиях или службах после проверки наличия новых ограничений. Это намерение отправляется только прослушивателям, которые зарегистрированы динамически, а не прослушивателям, объявленным в манифесте приложения.
  • Отменить регистрацию, пока не выполняется — В onPause() вам следует отменить регистрацию для трансляции ACTION_APPLICATION_RESTRICTIONS_CHANGED .

Выделенные устройства

Выделенные устройства — это киоски, используемые для одной цели, например, цифровые вывески, киоски для печати билетов или кассовые аппараты.

Когда устройство Android настроено как выделенное устройство, пользователь видит приложение, заблокированное на экране, без кнопок «Домой» или «Недавние приложения», позволяющих выйти из приложения. Выделенные устройства также можно настроить для отображения набора приложений, например библиотечного киоска с приложением для каталога библиотеки и веб-браузера.

Инструкции см. в разделе Выделенное устройство .

Настройте единый вход с помощью пользовательских вкладок Chrome

Корпоративные пользователи часто имеют на своих устройствах несколько приложений и предпочитают войти в систему один раз, чтобы получить доступ ко всем своим рабочим приложениям. Обычно пользователи входят в систему через WebView ; однако есть несколько причин, почему это не идеально:

  1. Пользователям часто приходится входить в систему несколько раз с одними и теми же учетными данными. Решение WebView часто не обеспечивает настоящую систему единого входа (SSO).
  2. Могут существовать угрозы безопасности, в том числе вредоносные приложения, проверяющие файлы cookie или внедряющие JavaScript® для доступа к учетным данным пользователя. Даже проверенные разработчики подвергаются риску, если полагаются на потенциально вредоносные сторонние SDK.

Решением обеих проблем является аутентификация пользователей с использованием пользовательских вкладок браузера вместо WebView. Это гарантирует, что аутентификация:

  • Происходит в безопасном контексте (системный браузер), где ведущее приложение не может проверять содержимое.
  • Имеет общее состояние файлов cookie, благодаря чему пользователю необходимо войти в систему только один раз.

Требования

Пользовательские вкладки поддерживаются вплоть до уровня API 15 (Android 4.0.3). Чтобы использовать пользовательские вкладки, вам понадобится поддерживаемый браузер, например Chrome. В Chrome 45 и более поздних версиях эта функция реализована в виде пользовательских вкладок Chrome .

Как реализовать единый вход с помощью пользовательских вкладок?

Google открыл исходный код клиентской библиотеки OAuth, которая использует пользовательские вкладки, и предоставил ее рабочей группе OpenID Connect OpenID Foundation. Чтобы настроить пользовательские вкладки для единого входа с помощью библиотеки AppAuth, см. документацию и пример кода на GitHub .

Проверьте свое приложение

После разработки приложения вам необходимо протестировать его — как в рабочем профиле, так и на полностью управляемом устройстве. См. инструкции ниже.

Используйте Test DPC для тестирования вашего приложения для Android

Мы предоставляем приложение Test DPC, которое поможет разработчикам Android тестировать свои приложения в корпоративной среде. Используя Test DPC, вы можете установить политики EMM или значения управляемой конфигурации на устройстве — как если бы организация управляла устройством с помощью EMM. Чтобы установить Test DPC на устройство, выберите один из следующих способов:

  • Установите Test DPC из GooglePlay .
  • Сборка из исходников на GitHub .

Дополнительную информацию о настройке Test DPC см. в инструкциях ниже и в Руководстве пользователя Test DPC .

Предоставить рабочий профиль

Чтобы протестировать приложение в рабочем профиле, вам необходимо сначала подготовить рабочий профиль на устройстве с помощью приложения Test DPC следующим образом:

  1. Установите Test DPC на устройство.
  2. В панели запуска Android коснитесь значка приложения «Настроить тестовый DPC» .
  3. Следуйте инструкциям на экране.
  4. Установите приложение на устройство и проверьте, как оно работает в рабочем профиле.

Android создает рабочий профиль и устанавливает в него копию Test DPC. Этот экземпляр Test DPC с рабочим значком используется для установки политик и управляемых конфигураций в рабочем профиле. Подробнее о настройке рабочего профиля для разработки читайте в руководстве разработчика Рабочие профили .

Предоставление полностью управляемого устройства

Организации используют полностью управляемые устройства, поскольку они могут применять к устройству полный спектр политик управления. Чтобы подготовить полностью управляемое устройство, выполните следующие действия:

  1. Установите Test DPC на устройство.
  2. Убедитесь, что на устройстве нет других пользователей или рабочего профиля.
  3. Убедитесь, что на устройстве нет учетных записей.
  4. Запустите следующую команду Android Debug Bridge (adb) в своем терминале:
    adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver
  5. После завершения подготовки владельца устройства вы можете протестировать свое приложение на этом устройстве. Вам следует специально проверить, как управляемые конфигурации и намерения работают на этом устройстве.

Вы также можете использовать другие методы подготовки — см. Руководство пользователя Test DPC . Чтобы узнать, как ИТ-администраторы обычно регистрируют и подготавливают устройства под управлением Android, прочтите статью Подготовка устройств .

Сквозное тестирование

После того как вы закончите тестирование своего приложения в указанных выше средах, вы, вероятно, захотите протестировать свое приложение в сквозной производственной среде. Этот процесс включает в себя шаги, которые должен предпринять клиент для развертывания вашего приложения в своей организации, в том числе:

  • Распространение приложений через Play
  • Управляемая конфигурация на стороне сервера
  • Управление политикой профиля на стороне сервера

Для завершения комплексного тестирования вам потребуется доступ к консоли EMM. Самый простой способ получить ее — запросить консоль тестирования у вашего EMM. Получив доступ, выполните следующие задачи:

  1. Создайте тестовую версию своего приложения с новым ApplicationId .
  2. Получите управляемый домен Google и привяжите его к своему EMM. Если у вас уже есть тестовый домен, привязанный к EMM, вам может потребоваться отменить его привязку, чтобы протестировать его с предпочитаемым вами EMM. Пожалуйста, проконсультируйтесь со своим EMM для получения информации о конкретных шагах по отмене привязки.
  3. Опубликуйте свое приложение в частном канале управляемого домена Google.
  4. Используйте консоль EMM и приложение EMM, чтобы:
    1. Настройте рабочие устройства.
    2. Распространите свое приложение.
    3. Установите управляемую конфигурацию.
    4. Установите политики устройства.

Этот процесс будет отличаться в зависимости от вашего EMM. Для получения более подробной информации обратитесь к документации вашего EMM. Поздравляю! Вы выполнили эти шаги и убедились, что ваше приложение хорошо работает для корпоративных пользователей.