MDM API
Управление мобильными устройствами (Mobile device management, MDM) является важным требованием для многих сценариев использования, позволяя ограничивать или контролировать функциональность конкретного устройства или парка устройств различными способами или в ответ на определённые события (например, в случае утери или кражи устройства).
ОС Аврора предоставляет фреймворк MDM. Разработанные с его помощью приложения (далее — MDM-приложения) позволяют применять ограничительные политики, а также в ручном режиме включать, отключать или вызывать конкретные функциональные возможности устройства.
Использование фреймворка MDM
Программный интерфейс фреймворка MDM состоит из двух отдельных аспектов. Первый аспект предоставляется библиотекой libsailfishpolicy и состоит из политик, которые определяют, может ли пользователь изменять определённые настройки или получать доступ к определённым функциям. Второй аспект предоставляется библиотекой libsailfishmdm и состоит из конкретных функциональных возможностей системы, которые предлагаются приложениям MDM, но могут или не могут быть доступны через другие системные API.
Для использования данных библиотек приложения MDM должны использовать файлы pkgconfig
sailfishpolicy.pc и sailfishmdm.pc, соответственно.
Например, в проекте, управляемом qmake:
CONFIG += link_pkgconfig
PKGCONFIG += sailfishpolicy sailfishmdm
Управляющие запросы к MDM API должны быть выполнены от имени пользователя sailfish-mdm. С другой стороны, получение политик MDM доступно любому пользователю.
Политика ОС Аврора
Политики ОС Аврора позволяет приложению MDM задавать текущие политики для конкретных параметров или функций. Например, приложение MDM может запретить пользователю изменять настройки GPS.
Дополнительную информацию можно получить в документации о политиках в ОС Аврора.
MDM API
MDM API позволяет приложению MDM выполнять определённые действия или запускать определённые функции на устройстве. Например, приложение MDM может включить функцию GPS для получения текущего местоположения устройства.
Пространство имён Sailfish::Mdm является устаревшим кодом из Sailfish OS, но оно всё ещё поддерживается, однако новый API добавляется в пространство имён Aurora::Mdm.
Все API можно разделить на следующие группы в соответствии с подсистемами ОС:
-
Управление приложениями
-
Сетевой стек
-
Блокировка устройства
-
Местоположение
-
Логи
-
Телефония
-
Обновления
-
Остальной MDM API
Профиль валидации MDM
Чтобы иметь возможность использовать MDM API, MDM-приложение должно быть подписано подписью MDM-разработчика и соответствовать профилю валидации MDM. Приложение должно состоять из UI-части и фоновой задачи. Исполняемый файл для UI-части указывается в секции [Desktop Entry] как для обычных приложений. Выполняется от имени текущего пользователя.
[Desktop Entry]
..
Exec=/usr/bin/path-to-mdm-app
Фоновая задача представляет собой systemd-сервис, который будет выполняться от имени пользователя sailfish-mdm. Конфигурационные файлы systemd и dbus (.service, .conf) для фоновой задачи будут автоматически генерироваться с помощью runtime-manager при установке приложения.
[X-Task MdmClient]
Type=mdmclient
Exec=/usr/bin/path-to-mdm-background-task
Обе части функционируют независимо друг от друга, при этом MDM API доступен исключительно в фоновой
задаче. Фоновая задача может создать сервис с D‑Bus‑именем <orgname>.<appname> на
системной шине для взаимодействия с UI. Также для фоновой задачи доступна директория
/var/lib/sailfish-mdm, с ограничением в 100MB.
Пример реализации MDM-приложения можно найти по ссылке.