Conectar a um Aplicativo do App Services Atlas - React Native SDK
Nesta página
O cliente do aplicativo é a interface para o backend do App Services. Ela fornece acesso à funcionalidade de autenticação, Função de Realm e Atlas Device Sync.
Antes de começar
Configurar o cliente do aplicativo
Para configurar seu cliente de aplicativo, passe a string do ID do aplicativo para a propriedade id
do AppProvider
. Envolva todos os componentes que precisem acessar o aplicativo com o AppProvider
. Neste exemplo, envolvemos o UserProvider no AppProvider
para autenticar um usuário.
import React from 'react'; import {AppProvider, UserProvider} from '@realm/react';
export const AppWithAuthHook = () => { return ( <View> <AppProvider id={APP_ID}> <UserProvider fallback={LogIn}> <MyApp /> </UserProvider> </AppProvider> </View> ); };
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 realm@12.6.0
: baseUrl
não é armazenado em cache
Quando você inicializa o cliente do aplicativo, a configuração é armazenada em cache internamente. A tentativa de "fechar" e, em seguida, 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.
Iniciando com React Native SDK versão 12.6.0, o baseUrl
no AppConfiguration
não é armazenado em cache. 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 aplicativo em cache não têm efeito.
Recuperar uma instância do cliente do aplicativo
Todos os componentes agrupados em um AppProvider
podem acessar o cliente da aplicação com o hook useApp()
.
import React from 'react'; import {useApp} from '@realm/react';
function MyApp() { const app = useApp(); // Proceed to app logic... }
Recuperar aplicação fora do fornecedor de aplicação
Para recuperar uma instância do cliente de aplicativo de qualquer lugar em seu aplicativo, instancie uma nova instância de Realm.App() a partir do pacote realm
e, em seguida, passe seu App ID
.
import Realm from 'realm'; const app = Realm.App.getApp("<Your App ID>");
Criptografar metadados de aplicativos
Você pode criptografar os metadados que o Atlas App Services armazena nos dispositivos do cliente. Use os valores do enum MetadataMode para determinar o comportamento da criptografia.
Para criptografar os metadados do app:
Importar
MetadataMode
deRealm
e importar outras dependências:import React from 'react'; import {Text, View} from 'react-native'; import {MetadataMode} from 'realm'; import {AppProvider} from '@realm/react'; Crie um objeto de configuração do aplicativo que contenha a propriedade
metadata
.Defina
metadata.mode
comoMetadataMode.Encryption
.Defina
metadata.encryptionKey
para a chave que você deseja usar para criptografia.Passe o objeto de configuração do aplicativo para
new Realm.App()
.
const EncryptMetadata = ({ encryptionKey, }: { encryptionKey: ArrayBuffer; }) => { const metadataConfig = { mode: MetadataMode.Encryption, encryptionKey: encryptionKey, }; return ( <AppProvider id={APP_ID} metadata={metadataConfig}> <RestOfApp /> </AppProvider> ); };
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.
Você pode especificar um baseURL
como prop para o AppProvider. Todas as chaves AppConfiguration podem ser passadas como props para AppProvider
.
Conecte-se a um servidor MongoDB diferente durante o tempo de execução
Alterado na versão realm@12.8.0
.
Em alguns casos, você pode querer alterar o baseURL
enquanto o aplicativo está em execução.
Atualmente, esse recurso é implementado como um módulo experimental que requer configuração específica do Typescript . Pode ser difícil fazer a configuração necessária funcionar com um aplicativo React Native. Para obter mais informações sobre a implementação, consulte a documentação do Node.js SDK