Seguridad de WidgetKit
WidgetKit es la estructura que permite que los desarrolladores ofrezcan widgets y complicaciones de reloj. Estos elementos pueden mostrar información personal y ser muy visibles, especialmente en dispositivos donde se usa la opción de pantalla siempre activa.
En iOS, los usuarios pueden elegir si la pantalla bloqueada muestra datos personales cuando se usa la pantalla siempre activa. Para bloquear el acceso a los datos de los widgets cuando están en la pantalla bloqueada, se puede ir a la sección Permitir acceso mientras está bloqueado en Configuración > Face ID y código, y desactivar el acceso.
En un Apple Watch, los usuarios pueden definir si se muestran los datos personales cuando se usa la pantalla siempre activa desde Configuración > Pantalla y brillo > Siempre activa > Ocultar complicaciones personales. Además, pueden elegir si se muestra el contenido oculto en todas las complicaciones o sólo en algunas.
Si un usuario elige ocultar el contenido que considera privado, WidgetKit genera un marcador de posición u oculta el contenido de alguna forma. Para configurar la opción de ocultar datos, los desarrolladores deben:
1. Implementar la devolución de llamada redacted(reason:)
.
2. Leer la propiedad privacy
.
3. Proporcionar visualizaciones de marcador de posición personalizadas.
Además, los desarrolladores pueden generar una visualización que haga que se vuelva a mostrar lo que se había ocultado con el modificador de visualización unredacted()
.
Si todo el contenido de un widget es privado o confidencial, además de poder marcar visualizaciones individuales como confidenciales, los desarrolladores pueden agregar la funcionalidad de protección de datos a una extensión del widget. WidgetKit mostrará los marcadores de posición en lugar del contenido hasta que el usuario desbloquee su dispositivo y se cumpla el nivel de privacidad seleccionado. Los desarrolladores deben activar la funcionalidad de protección de datos para la extensión del widget en Xcode y luego configurar la autorización de Data Protection
según el valor que coincida con el nivel de privacidad que se quiere ofrecer:
NSFileProtectionComplete
NSFileProtectionCompleteUnlessOpen
WidgetKit oculta el contenido de estos widgets mientras el dispositivo está bloqueado con el código y muestra un marcador de posición hasta que el usuario se auntentica después de haber reiniciado el dispositivo. Además, estos widgets de iOS no están disponibles como widgets del iPhone en Mac.