Segurança do WidgetKit
O WidgetKit é o framework usado para desenvolvimento que oferece widgets e complicações para o Apple Watch. Ambos podem mostrar informações confidenciais e estar altamente visíveis, especialmente em dispositivos com uma tela Sempre Ativada.
No iOS, usuários podem configurar se dados confidenciais são ou não mostrados na Tela Bloqueada e durante o uso da tela Sempre Ativada. Nos Ajustes, é possível desativar o acesso a dados para widgets da Tela Bloqueada na seção “Permitir Acesso Quando Bloqueado” em Ajustes > Face ID e Código.
No Apple Watch, é possível configurar se dados confidenciais são ou não mostrados durante o uso da tela Sempre Ativada, bastando escolher Ajustes > Brilho e Tela > Sempre Ativada > Ocultar Complicações Confidenciais. Também é possível optar por mostrar conteúdo censurado em todas as complicações ou apenas em complicações individuais.
Se um usuário optar por ocultar conteúdo que considera privado, o WidgetKit mostrará um marcador de posição ou partes censuradas. Para configurar partes censuradas, a equipe de desenvolvimento deve:
1. Implementar o callback redacted(reason:)
.
2. Obter a propriedade privacy
.
3. Fornecer visualizações personalizadas de marcadores de posição.
A equipe de desenvolvimento também pode renderizar uma visualização como não censurada com o modificador de visualização unredacted()
.
Como alternativa à marcação individual de visualizações como sensíveis à privacidade, se todo o conteúdo de um widget for sensível à privacidade, por exemplo, a equipe de desenvolvimento poderá adicionar a capacidade de Proteção de Dados a uma extensão do widget. Até um usuário desbloquear seu dispositivo para igualar o nível de privacidade selecionado, o WidgetKit mostrará marcadores de posição em vez do conteúdo do widget. A equipe de desenvolvimento precisa ativar a capacidade de Proteção de Dados para a extensão do widget no Xcode e definir o valor de privilégio de Data Protection
adequado ao nível de privacidade que deseja oferecer:
NSFileProtectionComplete
NSFileProtectionCompleteUnlessOpen
O WidgetKit oculta o conteúdo desses widgets quando o dispositivo está bloqueado por código e mostra um marcador de posição até que um usuário autentique após reiniciar o dispositivo. Adicionalmente, esses widgets do iOS não estão disponíveis como widgets do iPhone no Mac.