Atlas App Services 앱에 연결 - React Native SDK
앱 클라이언트는 App Services 백 엔드에 대한 인터페이스입니다. 이를 통해 인증 기능, Atlas Functions 및 Atlas Device Sync에 액세스할 수 있습니다.
시작하기 전에
앱 클라이언트 구성
앱 클라이언트를 설정하려면 AppProvider
의 id
프롭에 앱 ID 문자열을 전달합니다. AppProvider
을(를) 사용하여 앱에 액세스해야 하는 모든 구성 요소를 래핑합니다. 이 예시에서는 사용자를 인증하기 위해 AppProvider
에 UserProvider 를 래핑합니다.
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> ); };
여러 앱 클라이언트 인스턴스를 만들어 여러 앱에 연결할 수 있습니다. 동일한 앱 ID 를 주식 하는 모든 앱 클라이언트 인스턴스는 동일한 기본 연결을 사용합니다.
중요
앱 초기화 후 앱 구성 변경하기
버전 realm@12.6.0
에서 변경됨: baseUrl
이 캐시되지 않습니다.
앱 클라이언트를 초기화하면 구성이 내부적으로 캐시됩니다. 동일한 프로세스 내에서 구성을 변경하여 앱을 '닫았다'가 다시 열어도 아무런 효과가 없습니다. 클라이언트는 캐시된 구성을 계속 사용합니다.
React Native SDK 버전 12.6.0 부터는 의 이 baseUrl
AppConfiguration
캐시 되지 않습니다 . 즉, baseUrl
를 변경할 수 있으며 앱 클라이언트 는 업데이트된 구성을 사용합니다. 이전 SDK 버전에서는 캐시된 앱 구성의 baseUrl
변경 사항이 적용되지 않았습니다.
앱 클라이언트의 인스턴스 조회
AppProvider
내에 래핑된 모든 컴포넌트는 useApp()
후크를 사용하여 앱 클라이언트 에 액세스 할 수 있습니다.
import React from 'react'; import {useApp} from '@realm/react';
function MyApp() { const app = useApp(); // Proceed to app logic... }
앱 제공자 외부에서 앱 조회
애플리케이션의 어느 곳에서나 앱 클라이언트의 인스턴스를 조회하려면 realm
패키지에서 Realm.App() 의 새 인스턴스를 인스턴스화한 다음 App ID
를 전달합니다.
import Realm from 'realm'; const app = Realm.App.getApp("<Your App ID>");
앱 메타데이터 암호화
Atlas App Services가 클라이언트 기기에 저장하는 메타데이터를 암호화할 수 있습니다. MetadataMode 열거형 값을 사용하여 암호화 동작을 결정합니다.
앱 메타데이터를 암호화하려면 다음을 수행합니다.
MetadataMode
Realm
에서 를 가져오고 다른 종속성을 가져옵니다:import React from 'react'; import {Text, View} from 'react-native'; import {MetadataMode} from 'realm'; import {AppProvider} from '@realm/react'; metadata
속성을 포함하는 앱 구성 객체를 만듭니다.metadata.mode
을MetadataMode.Encryption
로 설정합니다.암호화에 사용할 키로
metadata.encryptionKey
를 설정합니다.앱 구성 객체를
new Realm.App()
에 전달합니다.
const EncryptMetadata = ({ encryptionKey, }: { encryptionKey: ArrayBuffer; }) => { const metadataConfig = { mode: MetadataMode.Encryption, encryptionKey: encryptionKey, }; return ( <AppProvider id={APP_ID} metadata={metadataConfig}> <RestOfApp /> </AppProvider> ); };