Sicurezza di WidgetKit
WidgetKit è il framework utilizzato dagli sviluppatori per creare widget e complicazioni di Apple Watch. Entrambi possono mostrare informazioni sensibili che potrebbero essere molto visibili, soprattutto per i dispositivi con lo schermo sempre attivo.
In iOS, gli utenti possono scegliere se mostrare i dati sensibili sulla schermata di blocco e quando la modalità “Schermo sempre attivo” è abilitata. In Impostazioni, possono disattivare l’accesso ai dati per i widget della schermata di blocco nella sezione “Consenti accesso se bloccato” in Impostazioni > Face ID e codice.
Su Apple Watch, gli utenti possono scegliere se monitorare i dati sensibili con “Schermo sempre attivo” in Impostazioni > Schermo e luminosità > Sempre attivo > Nascondi complicazioni sensibili. Inoltre, possono scegliere di mostrare contenuti oscurati per tutte o per le singole complicazioni.
Se un utente sceglie di nascondere contenuti che ritiene confidenziali, WidgetKit li sostituisce con un placeholder o li oscura. Per configurare i contenuti oscurati, lo sviluppatore deve:
1. Implementare il callback redacted(reason:)
.
2. Esplicitare la proprietà privacy
.
3. Fornire viste dei placeholder personalizzate.
Gli sviluppatori possono anche rendere una vista come non oscurata con il modificatore vista unredacted()
.
Invece di rendere i contenuti delle singole viste privati, nel caso in cui tutti i contenuti di un widget siano tali, lo sviluppatore può aggiungere la funzionalità di protezione dei dati all’estensione del widget. Fino a quando l’utente non selezionerà il corrispondente livello di privacy nel dispositivo, WidgetKit mostrerà i placeholder al posto dei contenuti del widget. Lo sviluppatore deve abilitare la funzionalità di protezione dei dati per l’estensione del widget in Xcode, quindi impostare il permesso Data Protection
sul valore corrispondente al livello di privacy che vuole rendere disponibile:
NSFileProtectionComplete
NSFileProtectionCompleteUnlessOpen
WidgetKit nasconde i contenuti di questi widget quando il dispositivo è bloccato da codice e mostra un Placeholder fino a quando un utente esegue l’autenticazione in seguito al riavvio del dispositivo. Inoltre, i widget di iOS non sono disponibili come widget di iPhone sul Mac.