Compatibilidade com extensões no iOS, iPadOS e macOS
O iOS, iPadOS e macOS permitem que os apps forneçam funcionalidade a outros apps através de extensões. As extensões são binários executáveis assinados de finalidade específica, empacotados em um app. Durante a instalação, o sistema detecta automaticamente as extensões e usa um sistema de correspondência para disponibilizá-las a outros apps.
Pontos de extensão
Uma área do sistema que ofereça suporte a extensões é chamada de ponto de extensão. Cada ponto de extensão fornece APIs e aplica regras para tal área. O sistema determina quais extensões estão disponíveis com base em regras de correspondência de ponto de extensão específicas. O sistema abre os processos de extensão automaticamente conforme a necessidade e gerencia a sua vida útil. Direitos podem ser usados para restringir a disponibilidade das extensões a certos apps do sistema. Por exemplo, um widget da visualização “Hoje” é exibido apenas na Central de Notificações e uma extensão de compartilhamento só está disponível no painel Compartilhamento. Exemplos de pontos de extensão são: widgets Hoje, Compartilhar, Ações, Edição de Fotos, Provedor de Arquivos e Teclado Personalizado.
Como as extensões se comunicam
As extensões são executadas em seus próprios espaços de endereço. A comunicação entre a extensão e o app a partir do qual ela foi ativada usa comunicações interprocessuais mediadas pelo framework do sistema. Elas não têm acesso aos arquivos ou espaços de memória umas das outras. As extensões são criadas para serem isoladas umas das outras, dos apps que as contêm e dos apps que as usam. Elas são sandboxed como qualquer outro app de terceiro e possuem um contêiner separado do contêiner do app que as contém. Entretanto, elas compartilham o mesmo acesso aos controles de privacidade do app em que estão contidas. Portanto, se um usuário conceder a um app acesso aos Contatos, esse acesso também é concedido às extensões integradas ao app, mas não às extensões ativadas por ele.
Como os teclados personalizados são usados
Os teclados personalizados são um tipo especial de extensão, que é ativada pelo usuário para todo o sistema. Depois que uma extensão de teclado é ativada, ela é usada em qualquer campo de texto, exceto para a digitação do código e em visualizações de texto seguro. Para restringir a transferência de dados do usuário, os teclados personalizados são executados por padrão em um sandbox bastante restritivo que bloqueia o acesso à rede, a serviços que executam operações de rede em nome de um processo e a APIs que poderiam permitir que a extensão extraísse dados digitados. Os desenvolvedores de teclados personalizados podem solicitar Acesso Aberto às suas extensões, o que permite que o sistema execute a extensão no sandbox padrão após obter o consentimento do usuário.
MDM e extensões
No caso de dispositivos inscritos em uma solução de gerenciamento de dispositivos móveis (MDM), as extensões de documento e de teclado seguem as regras “Abrir com Gerenciado”. Por exemplo, a solução MDM ajuda a impedir que usuários exportem um documento de um app gerenciado para um Provedor de Documentos não gerenciado ou ajuda a impedir que eles usem um teclado não gerenciado com um app gerenciado. Além disso, os desenvolvedores de apps podem impedir o uso de extensões de teclado de terceiros em seus apps.