Esta página describe cómo inicializar el cliente de su aplicación y conectarse al backend de Atlas App Services mediante el SDK de Kotlin.
El cliente de la aplicación es la interfaz del lado del cliente para el backend de App Services. Permite interactuar con la aplicación de App Services y proporciona acceso a sus funciones, como:
Autenticación de usuarios de la aplicación
Sincronización de datos entre el backend de Atlas y la aplicación cliente mediante Device Sync
Cada cliente de aplicación está asociado a un único ID de aplicación. Para saber cómo encontrar el ID de aplicación en la interfaz de usuario de App Services, consulte Encuentre el ID de su aplicación en la documentación de App Services.
Requisitos previos
Antes de poder conectarse a Atlas App Services, necesita una App Services App con un ID de la aplicación.
Para comenzar, consulta Crear una aplicación en la documentación de App Services.
Initialize the App Client
El SDK de Kotlin utiliza la interfaz de la aplicación para acceder a una App cliente.
Cada cliente App está asociado a un único ID de aplicación. Puedes tener varias instancias de cliente de aplicación que se conecten a varias aplicaciones, pero todas las instancias de cliente de aplicación que comparten el mismo ID de aplicación usan la misma conexión subyacente.
Puede inicializar un cliente de aplicación llamando a uno de los siguientes métodos:
.create(): inicializa una aplicación con valores de configuración por defecto.build(): initializes an App with custom configuration values passed through anAppConfigurationobject
Una vez que inicialice la aplicación, puede usar la instancia App para acceder a la funcionalidad de los servicios de la aplicación.
Default App Client
Para inicializar una aplicación con valores de configuración por defecto, pasa el ID de la aplicación de tu App Services App al método App.create():
// Creates an App with default configuration values val app = App.create(YOUR_APP_ID) // Replace with your App ID
Cliente de aplicación configurado
La interfaz AppConfiguration permite configurar el cliente de la aplicación con argumentos opcionales para un control más detallado de los detalles de la conexión de la aplicación, como encabezados de solicitud personalizados y claves para cifrado local.
Para controlar las opciones de configuración, utilice AppConfiguration.Builder y llame al .build() método para pasar un objeto de configuración:
// Creates an App with custom configuration values AppConfiguration.Builder(YOUR_APP_ID) // Specify your custom configuration values .appName("my-app-name") .appVersion("1.0.0") .baseUrl("http://localhost:9090") .build()
Almacenamiento en caché de la configuración
Changed in version 1.14.0: baseUrl is not cached in the AppConfiguration
Cuando se inicializa el cliente de la aplicación, la configuración se almacena en caché internamente.
Intentar cerrar y volver a abrir una aplicación con una configuración modificada dentro del mismo proceso no tiene ningún efecto. El cliente continúa usando la configuración en caché.
A partir de la versión del SDK de Kotlin,1.14.0 baseUrl() ya no se almacena en caché AppConfiguration en. Esto significa que se baseUrl puede cambiar y el cliente de la aplicación usará la configuración actualizada. En versiones anteriores del SDK, los cambios en baseUrl en una configuración de la aplicación almacenada en caché no surten efecto.
Configure the App Client
Las siguientes secciones describen cómo crear el cliente AppConfiguration con propiedades específicas.
Compartir conexiones de sincronización
Nota
Applies to Atlas Device Sync
This configuration option only applies to apps using Atlas Device Sync. For more information on using Device Sync with the Kotlin SDK, refer to Add Device Sync to an App - Kotlin SDK.
Novedades en la versión 1.13.0.
De forma predeterminada, el SDK abre una conexión independiente al servidor para cada dominio sincronizado. En Kotlin v1.13.0 y versiones posteriores, se puede habilitar la multiplexación de sesiones. Al habilitarla, el SDK comparte una conexión al servidor para todos los dominios sincronizados abiertos con un solo usuario de App Services. Compartir una conexión entre varias sesiones reduce los recursos y puede mejorar el rendimiento.
Multiplexing is disabled by default. You can enable it on the AppConfiguration using the .enableSessionMultiplexing() method, which accepts a Boolean value.
val config = AppConfiguration.Builder(YOUR_APP_ID) .enableSessionMultiplexing(true) .build()
Cuando está habilitada, la conexión compartida no se cierra de inmediato cuando todas las sesiones se cierran. En su lugar, permanece abierta durante el connectionLingerTime, que por defecto es 30 segundos. Puedes anular esta duración proporcionando un nuevo valor a SyncTimeoutOptions.connectionLingerTime() en el AppConfiguration.
val configCustomLingerTime = AppConfiguration.Builder(YOUR_APP_ID) .enableSessionMultiplexing(true) .syncTimeouts { connectionLingerTime = 10.seconds // Overrides default 30 secs } .build()
Para obtener más información, consulta la sección Configurar límites de tiempo de sincronización en esta página.
Configurar tiempos de espera de sincronización
Nota
Applies to Atlas Device Sync
This configuration option only applies to apps using Atlas Device Sync. For more information on using Device Sync with the Kotlin SDK, refer to Add Device Sync to an App - Kotlin SDK.
Novedades en la versión 1.13.0.
En Kotlin v1.13.0 y posteriores, puedes anular la configuración por defecto de timeout utilizada para sincronizar datos entre el backend de Atlas y la aplicación cliente.
Puedes configurar varios tiempos de espera de sincronización en AppConfiguration mediante el método .syncTimeouts(). Introduce los valores específicos de las propiedades de tiempo de espera que quieras anular. Los tiempos de espera configurados se aplican a todas las sesiones de sincronización de la aplicación.
val config = AppConfiguration.Builder(YOUR_APP_ID) .syncTimeouts { connectTimeout = 1.minutes connectionLingerTime = 15.seconds pingKeepalivePeriod = 30.seconds pongKeepalivePeriod = 1.minutes fastReconnectLimit = 30.seconds } .build()
For a complete list of the available timeout properties and their definitions, refer to the SyncTimeoutOptionsBuilder API reference.
Encriptar Metadatos de la aplicación
Al conectarse a App Services, Realm crea archivos de metadatos adicionales en un dispositivo. Para obtener más información sobre estos archivos de metadatos, consulte el SDK de dispositivos Atlas para Kotlin.
Puedes cifrar los metadatos que App Services almacena en los dispositivos cliente, de forma similar a como cifras un dominio sincronizado.
Para cifrar los metadatos de la aplicación, pasa tu llave de cifrado a la propiedad encryptionKey al iniciar la aplicación:
val config = AppConfiguration.Builder(YOUR_APP_ID) // Specify the encryption key .encryptionKey(myEncryptionKey) .build()
Establecer HTTP Headers personalizados
Novedades en la versión 1.11.0.
Si usas App Services o Device Sync con una configuración de proxy, es posible que necesites establecer cabeceras HTTP personalizadas. El Kotlin SDK admite la configuración de HTTP headers personalizados en la aplicación. Estos encabezados se añaden a cada solicitud a la App Services App, incluidas las llamadas a funciones.
When you initialize the App, you can pass:
el valor personalizado de authorizationHeaderName
Stringcualquier customRequestHeaders en un mapa de claves y valores
Stringde encabezados (el SDK acepta valores vacíos pero no claves vacías)
AppConfiguration.Builder(YOUR_APP_ID) .authorizationHeaderName("MyApp-Authorization") .customRequestHeaders { put("X-MyApp-Version", "1.0.0") } .build()
Habilitar la red de plataformas
Nuevo en la versión 1.14.0.
Atlas Device SDK's platform networking lets you use your platform's networking stack instead of the default WebSocket client for Device Sync traffic.
Cuando está habilitado, puede configurar aplicaciones que se ejecutan en plataformas Android y Java Virtual Machine (JVM) para usar WebSockets administrados a través de OkHttpLos WebSockets administrados brindan soporte de configuración avanzado para servidores proxy y firewalls que requieren autenticación.
El networking de la plataforma está deshabilitado por defecto. Puedes activarlo en el AppConfiguration utilizando el AppConfiguration.usePlatformNetworking() método, que acepta un valor booleano.
val config = AppConfiguration.Builder(YOUR_APP_ID) .usePlatformNetworking(true) .build()
Nota
Android and JVM platforms only
This feature is currently only available on Android and Java Virtual Machine (JVM) platforms.
Cerrar el cliente de la aplicación
You can manually close an App instance and release all underlying resources using the App.close() method:
app.close()
If not closed manually, resources are freed when the App instance is garbage collected.