Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Conectar-se ao App Services - Flutter SDK

Nesta página

  • Antes de começar
  • Acesse o cliente do aplicativo
  • Configuração avançada
  • Obter aplicativo por ID
  • Conecte-se a um servidor MongoDB específico
  • Conecte-se a um servidor MongoDB diferente durante o tempo de execução

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.

  1. Criar um App Services App

  2. Encontre o ID do aplicativo na UI do App Services

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.

  1. 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.

  2. Criar um AppConfiguration objeto com o ID do aplicativo do seu aplicativo como argumento.

  3. 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.

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.

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]);

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);

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:

  1. Pausar a sessão de sincronização

  2. Atualize o baseUrl utilizando o método app.updateBaseUrl

  3. Autentique novamente o usuário para fazer login usando o novo baseUrl

  4. 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.

Voltar

Serviços Atlas App