Conectar-se ao App Services - Flutter SDK
Nesta página
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.
Criar um AppConfiguration objeto com o ID do aplicativo do seu aplicativo como argumento.
Criar um aplicativo com o que
AppConfiguration
você acabou de criar. Em Flutter v1.7.0 e, posteriormente, 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 está mais armazenado em cache na configuração da aplicação. Isso significa que você pode alterar o baseUrl
e o cliente da aplicação usará 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 cliente App
. 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 AppConfiguration documentação de referência.
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 o ID do aplicativo para o App.getById() método. 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 app.updateBaseUrl experimental método. 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.