Поддержка расширений в iOS, iPadOS и macOS
Приложения в iOS, iPadOS и macOS могут предоставлять свои функции другим приложениям посредством расширений. Расширения — это специализированные подписанные исполняемые двоичные файлы, входящие в пакет приложения. Во время установки система автоматически обнаруживает расширения и делает их доступными для других приложений, использующих подходящую систему.
Точки расширения
Область системы, предназначенная для поддержки расширений, называется точкой расширения. Каждая точка расширения предоставляет API и обеспечивает применение политик в своей области. Система определяет доступные расширения на основе правил соответствия, заданных для конкретной точки расширения. Система автоматически запускает процессы расширений по мере необходимости и управляет их закрытием. Чтобы ограничить доступность расширений конкретному системному приложению, можно использовать права. Например, виджет «Сегодня» отображается только в Центре уведомлений, а расширение экспорта доступно только в панели общего доступа. Примерами точек расширения являются виджеты «Сегодня», кнопка «Поделиться», действия, редактирование фотографий, источник файлов и настраиваемая клавиатура.
Обмен данными между расширениями
Расширения работают в собственном адресном пространстве. Для обмена данными между расширением и приложением, которое его запустило, используется межпроцессная связь при посредничестве системной программной среды. У них нет доступа к файлам или адресному пространству друг друга. Расширения изолированы друг от друга, от содержащего их приложения и от приложений, которые их используют. Они исполняются в песочнице, как любые другие приложения сторонних разработчиков, а их контейнер отделен от контейнера, содержащего приложение. Однако им доступны те же настройки конфиденциальности, как у приложения-контейнера. Следовательно, если пользователь предоставил приложению доступ к Контактам, этот доступ также получат расширения, встроенные в приложение, но не получат расширения, запускаемые приложением.
Использование настраиваемых клавиатур
Настраиваемые клавиатуры являются особым типом расширений, которые включаются пользователем сразу для всей системы. Когда расширение клавиатуры включено, оно используется для всех текстовых полей, кроме поля код-пароля и любого поля безопасного ввода текста. Чтобы ограничить передачу данных пользователя, по умолчанию настраиваемые клавиатуры запускаются в песочнице с сильно ограниченными возможностями; эта песочница блокирует доступ к сети, к службам, которые выполняют сетевые операции от имени процесса, а также к интерфейсам API, которые могли бы позволить расширению извлекать вводимые данные. Разработчики настраиваемых клавиатур могут запросить для своего расширения открытый доступ, чтобы после получения согласия от пользователя система могла запускать расширение в песочнице, используемой по умолчанию.
MDM и расширения
На устройствах, которые зарегистрированы в системе управления мобильными устройствами (MDM), расширения для работы с документами и клавиатурами подчиняются правилам управления средой просмотра. Например, система MDM может принять меры, запретив пользователю экспортировать документ из управляемого приложения в неуправляемое хранилище документов или запретив использовать неуправляемую клавиатуру в управляемом приложении. Кроме того, разработчики приложений могут запретить использование сторонних расширений клавиатур в своем приложении.