Docs Menu
Docs Home
/ /
Sincronizar datos del dispositivo

Sincronización basada en particiones - SDK de Kotlin

La sincronización basada en particiones es un modo antiguo para usar Atlas Device Sync con el SDK de Kotlin de Realm. Recomendamos usar la sincronización flexible para aplicaciones nuevas. La información de esta página está dirigida a los usuarios que aún usan la sincronización basada en particiones.

Tip

El SDK de Kotlin de Realm v1.9.0 y versiones posteriores permiten migrar de la sincronización basada en particiones a la sincronización flexible. Para más información, consulte: Migrar de la sincronización basada en particiones a la sincronización flexible.

Cuando se selecciona Partition-Based Sync para la configuración de la aplicación de backend, la implementación del cliente debe incluir un valor de la partición. Este es el valor del campo clave de partición que se selecciona al configurar la Partition-Based Sync.

El valor de la partición determina a qué datos puede acceder la aplicación cliente.

Debes proporcionar un valor de partición cuando abres un reino sincronizado.

Para abrir un dominio de sincronización basada en particiones, pase un usuario, una partición y un conjunto de esquemas de objetos de dominio a SyncConfiguration.Builder(). Luego, pase la configuración a Realm.open() para abrir una instancia del dominio:

val app = App.create(YOUR_APP_ID)
runBlocking {
val user = app.login(Credentials.anonymous())
val config =
SyncConfiguration.Builder(user, PARTITION, setOf(/*realm object models here*/))
// specify name so realm doesn't just use the "default.realm" file for this user
.name(PARTITION)
.build()
val realm = Realm.open(config)
Log.v("Successfully opened realm: ${realm.configuration.name}")
realm.close()
}

Para ajustar configuraciones específicas, utilice las opciones proporcionadas por SyncConfiguration.Builder:

val app = App.create(YOUR_APP_ID)
runBlocking {
val user = app.login(Credentials.anonymous())
val config =
SyncConfiguration.Builder(user, PARTITION, setOf(/*realm object models here*/))
.maxNumberOfActiveVersions(10)
.waitForInitialRemoteData()
.name("realm name")
.build()
val realm = Realm.open(config)
Log.v("Successfully opened realm: ${realm.configuration}")
realm.close()
}

Nota

El progressAsFlow() El oyente del SDK de Kotlin solo está disponible actualmente para dominios que utilizan sincronización basada en particiones. El SDK de Kotlin aún no admite oyentes de progreso para la sincronización flexible.

Puedes supervisar el progreso de carga y descarga de una sesión de sincronización. La sesión de sincronización se inicia al abrir un dominio sincronizado. Para obtener más información, consulta Administrar una sesión de sincronización.

Para supervisar el progreso de carga y descarga de Sync, llame a SyncSession.progressAsFlow()

Este método devuelve un flujo de eventos de progreso. Progress proporciona el número total de bytes transferibles y los bytes restantes a transferir.

syncSession.progressAsFlow() toma dos argumentos:

  • Una enumeración de dirección que UPLOAD puede DOWNLOAD configurarse como o. Esto especifica que el flujo de progreso rastrea las cargas o descargas.

  • Una enumeración ProgressMode que se puede configurar en:

    • INDEFINITELY:Establece que las notificaciones continúen hasta que se cancele el registro de la devolución de llamada.

    • CURRENT_CHANGES:Establece que las notificaciones continúen hasta que solo se sincronicen los bytes transferibles actualmente.

val stream = realm.syncSession.progressAsFlow(
Direction.UPLOAD, ProgressMode.CURRENT_CHANGES
)
stream.collect { progress ->
if (progress.transferableBytes == progress.transferredBytes) {
Log.i("Upload complete")
}
}

Puedes migrar tu App Services Device Sync Mode de Partition-Based Sync a Flexible Sync. La migración es un proceso automático que no requiere ningún cambio en el código de tu aplicación. La migración automática requiere la versión 1.9.0 o superior del SDK de Realm Kotlin.

La migración le permite conservar sus usuarios y configuración de autenticación de App Services. Flexible Sync ofrece opciones de configuración de permisos más versátiles y una sincronización de datos más granular.

Para obtener más información sobre cómo migrar su aplicación de App Services de sincronización basada en particiones a sincronización flexible, consulte Migrar modos de sincronización de dispositivos.

La migración automática de la sincronización basada en particiones a la sincronización flexible no requiere cambios en el código de cliente. Sin embargo, para facilitar esta funcionalidad, Realm gestiona automáticamente las diferencias entre los dos modos de sincronización mediante:

  • Creación automática de suscripciones de sincronización flexible para cada tipo de objeto donde partitionKey == partitionValue.

  • Inyectar un campo partitionKey en cada objeto si no existe. Esto es necesario para la suscripción automática a Sincronización Flexible.

Si necesita actualizar el código de su cliente después de la migración, considere actualizar su base de código para eliminar las funciones de migración ocultas. Le recomendamos actualizar su base de código cuando:

  • Agregue un nuevo modelo o cambie un modelo en su base de código de cliente.

  • Agrega o cambia funcionalidad que implica leer o escribir objetos de Realm

  • Desea implementar un control más preciso sobre los datos que sincroniza

Realice estos cambios para convertir el código de cliente de sincronización basada en particiones para utilizar la sincronización flexible:

  • Actualice su SyncConfiguration.Builder() para usar la sincronización flexible. Esto implica eliminar el partitionValue y agregar un conjunto de suscripciones iniciales, si es necesario.

  • Agregue propiedades relevantes a sus modelos de objetos para usarlas en sus suscripciones de Sincronización Flexible. Por ejemplo, podría agregar una propiedad ownerId para permitir que un usuario sincronice solo sus propios datos.

  • Elimine las suscripciones automáticas de sincronización flexible y cree manualmente las suscripciones relevantes.

Para obtener ejemplos de estrategias de permisos de sincronización flexible, incluidos ejemplos de cómo modelar datos para estas estrategias, consulte la Guía de permisos de sincronización de dispositivos.

Al migrar de la sincronización basada en particiones a la sincronización flexible, Realm crea automáticamente suscripciones ocultas de sincronización flexible para su aplicación. La próxima vez que agregue o modifique suscripciones, le recomendamos lo siguiente:

  1. Eliminar las suscripciones generadas automáticamente.

  2. Suscríbase a consultas o agregue manualmente las suscripciones relevantes en la base de código de su cliente.

Esto le permite ver toda su lógica de suscripción junta en su base de código para futuras iteraciones y depuraciones.

Para obtener más información sobre las suscripciones de Flexible Sync generadas automáticamente, consulte Migrar la aplicación cliente a Flexible Sync.

Volver

Sincronizar datos en segundo plano

En esta página