O cliente App
é a interface para o backend do Atlas App Services. Ele fornece acesso aos recursos dos App Services, como autenticação de usuário e Device Sync.
Antes de começar
Acesse o cliente do aplicativo
Alterado na versão 1.7.0: App
deve ser criado no isolado principal.
Crie uma instância do App
para acessar as funcionalidades do App Services em todo o seu aplicativo cliente. Recomendamos que você crie a instância App
apenas uma vez no isolado principal, de preferência assim que o aplicativo for iniciado.
Obtenha App Services App ID o do seu aplicativo de serviços de aplicativos na interface do usuário do Services. Para saber como, consulte Encontrar o ID do seu aplicativo.
Crie um objeto AppConfiguration com o ID do aplicativo do seu aplicativo como argumento.
Crie um aplicativo com o que
AppConfiguration
você acabou de criar. No Flutter v..1 70 e posterior, isso deve ser feito no isolamento principal, caso contrário, o SDK gerará um erro.
Depois de criar o App
, você pode acessar a instância App
construída em um background isolado usando App.getById
. Consulte a seção Obter aplicativo por ID nesta página para obter mais informações.
final appConfig = AppConfiguration(appId); final app = App(appConfig);
Você pode criar várias instâncias do cliente de aplicativo para se conectar a vários aplicativos. Todas as instâncias de cliente de aplicativo que compartilham a mesma ID de aplicativo usam a mesma conexão subjacente.
Importante
Alterando uma configuração de aplicativo após inicializar o aplicativo
Alterado na versão 1.8.0: baseUrl
não está armazenado em cache no AppConfiguration
Quando você cliente o , a configuração é armazenada em cache internamente. A tentativa de fechar e reabrir uma aplicação com uma configuração alterada dentro do mesmo processo não tem efeito. O cliente continua usando a configuração em cache.
No Flutter SDK versão 1.8.0 e posterior, o baseUrl não é mais armazenado em cache na configuração da aplicação. Isso significa que você pode alterar o baseUrl
e o cliente da aplicação utilizará a configuração atualizada. Em versões anteriores do SDK, as alterações no baseUrl
em uma configuração de aplicação em cache não têm efeito.
Configuração avançada
Descontinuado desde a versão 1.6.0: App.localAppName
e App.localAppVersion
não são mais usados.
Você pode adicionar argumentos opcionais ao AppConfiguration
para um controle mais granular do seu App
cliente. Talvez você queira adicionar coisas como tempos limite personalizados para conexões ou chaves para criptografia de metadados local. Para saber mais sobre as opções de configuração disponíveis, consulte a documentação de referência do AppConfiguration.
final appConfig = AppConfiguration(appId, defaultRequestTimeout: const Duration(seconds: 120) // ... see reference docs for all available configuration options );
Observação
Conectar-se usando o Android 7 ou anterior
O cliente HTTP padrão incluído no Realm Flutter SDK não funciona para aplicativos executados no Android 7 ou versões mais antigas. Para contornar isto, você deve adicionar um cliente HTTP personalizado ao seu AppConfiguration
. Para saber mais, consulte Conectar ao App Services usando o Android 7 ou versão anterior.
Obter aplicativo por ID
Novidades na versão 1.7.0.
Depois de criar uma App
instância no isolamento principal, você pode acessar a instância construída em um isolamento do background passando a ID do aplicativo para o método App.getById(). Em seguida, você pode usá-lo para trabalhar com o App
e os usuários conforme necessário.
// 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]);
Conecte-se a um servidor MongoDB específico
Por padrão, o Atlas Device SDK se conecta ao Atlas usando o baseUrl
global de https://services.cloud.mongodb.com
. Em alguns casos, você pode querer se conectar a um servidor diferente:
Seu App Services App usa o sistema local e você deseja se conectar diretamente a um
baseUrl
local em sua região.
Para obter mais informações, consulte a documentação do Local Deployment App Services.
Você pode especificar um baseUrl
no 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);
Conecte-se a um servidor MongoDB diferente durante o tempo de execução
Novidade na versão 1.8.0.
Alterado na versão 2.2.0: updateBaseUrl
aceita valor null
Em alguns casos, você pode querer alterar o baseUrl
enquanto o aplicativo está em execução.
Para alterar o baseUrl
durante o tempo de execução, chame o método experimental app.updateBaseUrl. Você pode passar null
para redefinir o baseUrl
para o valor padrão.
// 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);
Essa API é experimental e pode mudar em versões futuras.
Se você quiser alterar o baseUrl
depois de fazer login em um usuário e abrir um banco de banco de dados sincronizado, o aplicativo deverá executar uma reinício do cliente. Para obter mais informações, consulte Redefinição de cliente.
Execute o seguinte em seu código:
Atualize o
baseUrl
utilizando o métodoapp.updateBaseUrl
Autentique novamente o usuário para fazer login usando o novo
baseUrl
Abra um banco de dados de dados sincronizado extraindo dados do novo servidor
Tanto o servidor quanto o cliente devem estar online para que o usuário se autentique e se conecte ao novo servidor. Se o servidor não estiver online ou o cliente não tiver uma conexão de rede, o usuário não poderá autenticar e abrir o banco de dados de dados.