Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Conectar-se ao App Services - Flutter SDK

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. Crie um objeto AppConfiguration com o ID do aplicativo do seu aplicativo como argumento.

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

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.

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

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 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:

  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

Nesta página