El App El cliente es la interfaz con el backend de Atlas App Services. Proporciona acceso a funciones de App Services como la autenticación de usuarios y la sincronización de dispositivos.
Antes de comenzar
Acceder al cliente de la aplicación
Cambiado en la 1.7.0 versión: App debe crearse en el aislamiento principal.
Cree una instancia App para acceder a las funciones de App Services en toda su aplicación cliente. Recomendamos crear la instancia App solo una vez en el aislamiento principal, idealmente en cuanto se inicie la aplicación.
Obtén el ID de tu aplicación de App Services desde la interfaz de usuario de App Services. Para saber cómo, consulta "Buscar el ID de tu aplicación".
Crear una AppConfiguration objeto con el ID de aplicación de su aplicación como argumento.
Crea una Aplicación con el
AppConfigurationque acabas de crear. En Flutter v1.7.0 y más adelante, esto debe hacerse en el aislado principal, de lo contrario el SDK arroja un error.
Después de App crear, puede acceder a la App instancia construida en un aislamiento en segundo plano App.getById mediante. Consulte la sección "Obtener aplicación por ID" en esta página para obtener más información.
final appConfig = AppConfiguration(appId); final app = App(appConfig);
Puedes crear varias instancias de cliente de aplicación para conectarte a varias aplicaciones. Todas las instancias de cliente de aplicación que comparten el mismo ID de aplicación usan la misma conexión subyacente.
Importante
Cambiar la configuración de una aplicación después de inicializarla
Cambiado 1.8.0 enbaseUrl la versión: no se almacena en caché en AppConfiguration
Al inicializar 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 almacenada en caché.
En la versión del SDK de Flutter 1.8.0 y posteriores, la URL base ya no se almacena en caché en la configuración de la aplicación. Esto significa que se puede cambiar el valor baseUrl y el cliente de la aplicación usará la configuración actualizada. En versiones anteriores del SDK, los cambios en el valor baseUrl en una configuración de la aplicación almacenada en caché no surten efecto.
Configuración avanzada
Obsoleto desde la 1.6.0 versión: App.localAppName y App.localAppVersion ya no se utilizan.
Puede agregar argumentos opcionales a AppConfiguration para un control más detallado de su App cliente. Quizás desee agregar opciones como tiempos de espera personalizados para las conexiones o claves para el cifrado de metadatos locales. Para obtener más información sobre las opciones de configuración disponibles, consulte la documentación de referencia de AppConfiguration.
final appConfig = AppConfiguration(appId, defaultRequestTimeout: const Duration(seconds: 120) // ... see reference docs for all available configuration options );
Nota
Conectarse usando Android 7 o anterior
El cliente HTTP predeterminado incluido en el SDK de Flutter de Realm no funciona con apps que se ejecutan en Android 7 o versiones anteriores. Para solucionarlo, debes agregar un cliente HTTP personalizado a tu.AppConfiguration Para obtener más información, consulta "Conectarse a los servicios de apps con Android 7 o versiones anteriores".
Obtener la aplicación por ID
Nuevo en la versión 1.7.0.
Después de crear una App instancia en el aislamiento principal, puede acceder a la instancia construida en un aislamiento en segundo plano pasando el ID de la aplicación al método App.getById(). Después, puede usarla para trabajar con App y los usuarios según sea necesario.
// Create an App instance once on main isolate, // ideally as soon as the app starts final appConfig = AppConfiguration(appId); final app = App(appConfig); final receivePort = ReceivePort(); // Later, access the App instance on background isolate await Isolate.spawn((List<Object> args) async { final sendPort = args[0] as SendPort; final appId = args[1] as String; try { final backgroundApp = App.getById(appId); // ... Access App users final user = backgroundApp?.currentUser!; // Use the App and user as needed. sendPort.send('Background task completed'); } catch (e) { sendPort.send('Error: $e'); } }, [receivePort.sendPort, appId]);
Conectarse a un servidor específico
De forma predeterminada, el SDK de dispositivos Atlas se conecta a Atlas mediante el valor global baseUrl de https://services.cloud.mongodb.com. En algunos casos, es posible que desee conectarse a un servidor diferente:
Su aplicación de Servicios de aplicaciones utiliza una implementación local y desea conectarse directamente a un
baseUrllocal en su región.
Para obtener más información, consulte la documentación de Servicios de aplicaciones de implementación local.
Puede especificar un baseUrl en AppConfiguration:
// Specify a baseUrl to connect to a server other than the default final appConfig = AppConfiguration(appId, baseUrl: Uri.parse('https://example.com')); var app = App(appConfig);
Conectarse a un servidor diferente durante el tiempo de ejecución
Nuevo en la versión 1.8.0.
Cambiado en la 2.2.0 versión: updateBaseUrl acepta null el valor
En algunos casos, es posible que desees cambiar baseUrl mientras la aplicación se está ejecutando.
Para cambiar baseUrl durante la ejecución, llame al método experimental app.updateBaseUrl. Puede pasar null para restablecer baseUrl al valor predeterminado.
// Specify a custom baseUrl to connect to. // In this case, a custom server instance running on the device. final appConfig = AppConfiguration(customServerAppId, baseUrl: Uri.parse('http://localhost:80')); var app = App(appConfig); // ... log in a user and use the app ... // Later, change the baseUrl to the default: // https://services.cloud.mongodb.com await app.updateBaseUrl(null);
Esta API es experimental y puede cambiar en futuras versiones.
Si desea cambiar el baseUrl después de iniciar sesión y abrir una base de datos sincronizada, la aplicación debe restablecer el cliente. Para obtener más información, consulte Restablecimiento del cliente.
Realice lo siguiente en su código:
Actualice el
baseUrlutilizando el métodoapp.updateBaseUrlVuelva a autenticar al usuario para iniciar sesión utilizando el nuevo
baseUrlAbra una base de datos sincronizada que extraiga datos del nuevo servidor
Tanto el servidor como el cliente deben estar en línea para que el usuario se autentique y se conecte al nuevo servidor. Si el servidor no está en línea o el cliente no tiene conexión de red, el usuario no podrá autenticarse ni abrir la base de datos.