Conecte-se ao Atlas App Services - Kotlin SDK
Nesta página
- Pré-requisitos
- Inicialize o cliente do aplicativo
- Cliente de aplicativo padrão
- Cliente de aplicativo configurado
- Configurar o cliente do aplicativo
- Compartilhar conexões de sincronização
- Configurar tempos limite de sincronização
- Criptografar metadados de aplicativos
- Definir HTTP headerspersonalizados
- Habilitar a rede de plataforma
- Conecte-se a um servidor MongoDB específico
- Conecte-se a um servidor MongoDB diferente durante o tempo de execução
- Feche o cliente do aplicativo
Esta página descreve como inicializar seu cliente de aplicativo e conectar-se ao backend do Atlas App Services usando o Kotlin SDK.
O cliente da aplicação é a interface do lado do cliente para o backend do App Services. Ele permite que você interaja com seu App Services App e fornece acesso à funcionalidade do App Services, incluindo:
Autenticação de usuários do aplicativo
Sincronizar dados entre o backend do Atlas e a aplicação cliente usando o Device Sync
Cada cliente de aplicativo está associado a um único ID de aplicativo. Para saber como localizar sua ID do aplicativo na interface do usuário do App Services, consulte Find Your App ID na documentação do App Services.
Pré-requisitos
Antes de se conectar ao Atlas App Services, você precisa de um App Services App com uma ID de aplicativo.
Para começar, consulte Criar um aplicativo na documentação do App Services.
Inicialize o cliente do aplicativo
O Kotlin SDK usa a interface do aplicativo para acessar um cliente App
.
Cada cliente App
está associado a um único ID do aplicativo. Você pode ter várias instâncias de cliente de aplicativo que se conectam a vários aplicativos, mas todas as instâncias de cliente de aplicativo que compartilham o mesmo ID de aplicativo usam a mesma conexão subjacente.
Você pode inicializar um cliente de aplicação chamando um dos seguintes métodos:
.create()
: inicializa um aplicativo com valores de configuração padrão.build()
: inicializa um aplicativo com valores de configuração personalizados passados por um objetoAppConfiguration
Após inicializar o Aplicativo, você pode utilizar a instância do App
para acessar a funcionalidade do App Services.
Cliente de aplicativo padrão
Para inicializar um aplicativo com valores de configuração padrão, passe o ID do aplicativo para seu App Services App para o método App.create() :
// Creates an App with default configuration values val app = App.create(YOUR_APP_ID) // Replace with your App ID
Cliente de aplicativo configurado
A interface AppConfiguration permite que você configure seu cliente de aplicativo com argumentos opcionais para um controle mais granular dos detalhes de conexão do aplicativo, como cabeçalhos de solicitação personalizados e chaves para criptografia local.
Para controlar as opções de configuração, use o AppConfiguration.Builder e chame o método .build()
para passar um objeto de configuração:
// Creates an App with custom configuration values AppConfiguration.Builder(YOUR_APP_ID) // Specify your custom configuration values .appName("my-app-name") .appVersion("1.0.0") .baseUrl("http://localhost:9090") .build()
Cache de configuração
Alterado na versão 1.14.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.
A partir do Kotlin SDK versão 1.14.0, o baseUrl() não é mais armazenado em cache no AppConfiguration
. 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 aplicativo em cache não têm efeito.
Configurar o cliente do aplicativo
As seções seguintes descrevem como construir o cliente do AppConfiguration
com propriedades específicas.
Compartilhar conexões de sincronização
Observação
Aplica-se ao Atlas Device Sync
Esta opção de configuração só se aplica a aplicativos que utilizam Atlas Device Sync. Para obter mais informações sobre como usar o Device Sync com o Kotlin SDK, consulte Adicionar o Device Sync a um aplicativo - Kotlin SDK.
Novidade na versão 1.13.0.
Por padrão, o SDK abre uma conexão separada com o servidor para cada domínio sincronizado. No Kotlin v1.13.0 e posterior, você pode habilitar a multiplexação de sessão. Quando ativado, o SDK compartilha uma conexão com o servidor para todos os domínios sincronizados abertos com um único usuário do Atlas App Services. O compartilhamento de uma conexão em várias sessões reduz os recursos e pode melhorar o desempenho.
A multiplexação está desabilitada por padrão. Você pode habilitá-lo no AppConfiguration
usando o arquivo .enableSessionMultiflexing() , que aceita um valor booleano.
val config = AppConfiguration.Builder(YOUR_APP_ID) .enableSessionMultiplexing(true) .build()
Quando ativada, a conexão compartilhada não fecha imediatamente quando todas as sessões são fechadas. Em vez disso, ele permanece aberto pelos connectionLingerTime
, que é padronizado para 30 segundos. Você pode substituir esta duração passando um novo valor para SyncTimeoutOptions.connectionLingerTime() no AppConfiguration
.
val configCustomLingerTime = AppConfiguration.Builder(YOUR_APP_ID) .enableSessionMultiplexing(true) .syncTimeouts { connectionLingerTime = 10.seconds // Overrides default 30 secs } .build()
Para obter mais informações, consulte a seção Configurar tempos limite de sincronização nesta página.
Configurar tempos limite de sincronização
Observação
Aplica-se ao Atlas Device Sync
Esta opção de configuração só se aplica a aplicativos que utilizam Atlas Device Sync. Para obter mais informações sobre como usar o Device Sync com o Kotlin SDK, consulte Adicionar o Device Sync a um aplicativo - Kotlin SDK.
Novidade na versão 1.13.0.
No Kotlin v1.13.0 e posterior, você pode substituir as configurações de tempo limite padrão usadas ao sincronizar dados entre o backend do Atlas e o aplicativo cliente .
Você pode definir várias configurações de tempo limite de sincronização no AppConfiguration
usando o .syncTimeouts() método. Passe valores de propriedade de tempo limite específicos que você deseja substituir. Os tempos limite configurados se aplicam a todas as sessões de sincronização no aplicativo.
val config = AppConfiguration.Builder(YOUR_APP_ID) .syncTimeouts { connectTimeout = 1.minutes connectionLingerTime = 15.seconds pingKeepalivePeriod = 30.seconds pongKeepalivePeriod = 1.minutes fastReconnectLimit = 30.seconds } .build()
Para obter uma lista completa das propriedades de tempo limite disponíveis e suas definições, consulte a referência da API SyncTimeoutOptionsBuilder .
Criptografar metadados de aplicativos
Quando você se conecta ao App Services, o Realm cria arquivos de metadados adicionais em um dispositivo. Para mais informações sobre estes arquivos de metadados, consulte Atlas Device SDK for Kotlin.
Você pode criptografar os metadados que o Atlas App Services armazena em dispositivos clientes, semelhante à forma como você criptografa um domínio Realm.
Para criptografar os metadados do aplicativo, passe sua chave de encriptação para a propriedade encryptionKey ao inicializar o aplicativo:
val config = AppConfiguration.Builder(YOUR_APP_ID) // Specify the encryption key .encryptionKey(myEncryptionKey) .build()
Definir HTTP headerspersonalizados
Novidades na versão 1.11.0.
Se você usar o App Services ou o Device Sync com uma configuração de proxy, talvez seja necessário definir HTTP headers personalizados. O Kotlin SDK suporta a configuração de HTTP headers personalizados no aplicativo. Esses cabeçalhos são anexados a cada solicitação ao App Services App, incluindo chamadas de função.
Ao inicializar o aplicativo, você pode passar:
o valor personalizado authorizedHeaderName
String
qualquer customRequestHeaders em um mapa de chaves e valores de cabeçalho
String
(o SDK aceita valores vazios, mas não chaves vazias)
AppConfiguration.Builder(YOUR_APP_ID) .authorizationHeaderName("MyApp-Authorization") .customRequestHeaders { put("X-MyApp-Version", "1.0.0") } .build()
Habilitar a rede de plataforma
Novidades na versão 1.14.0.
A rede de plataforma do Atlas Device SDK permite que você use a pilha de rede da sua plataforma em vez do cliente WebSocket padrão para o tráfego do Device Sync .
Quando habilitado, você pode configurar aplicativos em execução em plataformas Android e Java Virtual Machine (JVM) para usar WebSockets gerenciados pelo OkHttp. Os WebSockets gerenciados fornecem suporte de configuração avançada para proxies e firewalls que exigem autenticação.
A rede de plataforma está desabilitada por padrão. Você pode habilitá-lo no AppConfiguration
utilizando o AppConfiguration.usePlatformNetwork() , que aceita um valor booleano.
val config = AppConfiguration.Builder(YOUR_APP_ID) .usePlatformNetworking(true) .build()
Observação
Somente plataformas Android e JVM
Atualmente, este recurso está disponível apenas em plataformas Android e Java Virtual Machine (JVM).
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 instead of the default val config = AppConfiguration.Builder(YOUR_APP_ID) .baseUrl("https://example.com") .build()
Conecte-se a um servidor MongoDB diferente durante o tempo de execução
Novidades na versão 1.16.0.
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, an Edge Server instance running on the device: val config = AppConfiguration.Builder(EDGE_SERVER_APP_ID) .baseUrl("http://localhost:80") .build() val app = App.create(config) // ... log in a user and use the app ... // Later, change the baseUrl. // In this case, pass `null` to reset to default: // https://services.cloud.mongodb.com app.updateBaseUrl(null)
Se você alterar o baseUrl
após ter conectado um usuário e aberto um banco de banco de dados sincronizado, o aplicativo deverá executar um reinício do cliente. Para obter mais informações, consulte Gerenciar erros de redefinição do 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.
Feche o cliente do aplicativo
Você pode fechar manualmente uma instância do aplicativo e liberar todos os recursos subjacentes usando o método App.close() :
app.close()
Se não forem fechados manualmente, os recursos serão liberados quando a instância do aplicativo for coletada como lixo.