Com a atualização Sequoia, macOS agora se baseia no UUID das aplicações para vários controles de privacidade e segurança, como acesso à rede. Essa nova caraterística do macOS pode causar problemas no lado do usuário final, como ter que frequentemente reautorizar as aplicações 4D construídas. Para resolver isso, a partir de 4D 20 R9, cada aplicação 4D construída para macOS agora tem seu próprio UUID de aplicação. Essa mudança garante controles de acesso melhor ajustados. Vamos nos aprofundar nos detalhes.
macOS Sequoia e UUIDs de aplicação
Com a introdução da versão Sequoia, o macOS passou a basear algumas definições de privacidade e segurança nos UUIDs das aplicações em vez dos seus nomes. Assim, se várias aplicações partilharem o mesmo UUID, isso pode causar problemas nos controles do sistema. Isto é particularmente relevante para o acesso à Rede local, conforme explicado nesta nota técnica. As configurações envolvidas estão localizadas na caixa de diálogo Configurações do sistema, no painel Rede local do item Privacidade e segurança:
UUIDs de Aplicação Única
Antes do 4D 20 R9, aplicações 4D construídas compartilhavam o mesmo UUID que a aplicação 4D Volume Desktop ou 4D Server usada como fonte.
Agora, ao construir uma aplicação, seu UUID é automaticamente definido usando uma combinação da aplicação 4D de origem e seu identificador de aplicação. Isso garante que sua aplicação é considerada única em sistemas macOS e mantém o mesmo UUID para sua aplicação desde que use a mesma versão da aplicação fonte 4D.
Claro, esse novo comportamento também é aplicado ao componente Build4D!
Boas notícias, nada que precise fazer, nada precisa ser mudado em sua cadeia de construção, tudo é totalmente automático. Normalmente, pode parar de ler aqui, mas se precisar, fornecemos controlo total do UUID! Isto é explicado no parágrafo seguinte.
Funções actualizadas
Para suportar este novo recurso, atualizamos a função File. getAppInfo() para retornar o UUID do aplicativo quando aplicado ao executável do aplicativo. Aqui está um exemplo de trecho de código:
var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
E aqui está um exemplo de resultado:
{
"archs": [
{
"type": 16777223,
"name": "x86_64",
"uuid": "9C286FBFFAAA242FEBF462654C950ECF"
},
{
"type": 16777228,
"name": "arm64",
"uuid": "8D8AA28824AACC558AB3D287A43EC53A"
}
]
}
Além disso, a função File. setAppInfo() foi melhorada para permitir que defina o seu próprio UUID, se pretender. Eis como pode fazer isso:
var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
// regenera uuids para todas as arquiteturas
For each ($arch; $info.archs)
$arch.uuid:=Generate UUID
End for each
// atualizar o app com as novas uuids
$app.setAppInfo($info)
Esperamos que esta funcionalidade melhore a experiência do utilizador com as suas aplicações implementadas, garantindo que são únicas e estão melhor integradas em ambientes macOS.
Boa programação!