DEV Community

GoyesDev
GoyesDev

Posted on

[SD] Sincronizando SwiftData con iCloud

Activar Capability

El primer paso para sincronizar SwiftData con CloudKit es activar la Capability "iCloud":

Para ello, hay que buscar la opción "+Capability" cerca de la configuración General del target del proyecto.

Capabilities option

iCloud capability

Luego, aparecerá el servicio activo en la pestaña de firmado (Signing) de donde debemos elegir los servicios que necesitamos. Para sincronizar SwiftData con iCloud necesitamos activar "CloudKit":

Servicios

Luego, se hace clic en el botón "+" para agregar un nuevo contenedor de CloudKit o seleccionar uno que ya exista. El contenedor va a vivir en los servidores de Apple, así que hay que asegurarse de poner un identificador único. Para ello, se puede usar el bundle identifier como referencia.

Después de crear el identificador, se presiona el botón de refrescar.

Como CloudKit usa notificaciones remotas ("Remote Notifications") para reportar cambios de la base de datos que pueden ocurrir en segundo plano. Por esto, ahora hay que activar la Capability "Background Modes"

Background modes

Luego hay que activar la casilla "Remote Notifications" de entre las opciones:

Remote Notifications

A nivel de implementación hay algunas restricciones:

  • No se puede usar @Attribute(.unique) sobre ninguna propiedad a sincronizar con CloudKit.
  • Todas las propiedades deben tener un valor por defecto o ser marcadas como opcionales.
  • Todas las relaciones deben marcarse como opcionales.

Para administrar remotamente la base de datos en CloudKit, se puede entrar al dashboard.

En el dashboard hay un panel de administración para el ambiente de producción y otro para el de desarrollo.

NOTA: Todo esto solo funciona si se tiene una cuenta de Apple Developer Program


Bibliografía

Top comments (0)