App クライアントは、App Services バックエンドへのインターフェースです。 認証機能、 Atlas Functions 、 Atlas Device Sync へのアクセスを提供します。
始める前に
アプリ クライアントの構成
アプリクライアントを設定するには、アプリ ID string をAppProvider
の id
プロンプトに渡します。 アプリにアクセスするために必要なコンポーネントをAppProvider
でラップします。 この例では、ユーザーを認証するためにUserProviderをAppProvider
でラップします。
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
はキャッシュされません
App クライアントを初期化すると、構成は内部的にキャッシュされます。 同じプロセス内で変更された構成でアプリを「閉じ」、その後再度開かしようとしても効果はありません。 クライアントはキャッシュされた構成を引き続き使用します。
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>");
アプリ メタデータの暗号化
App Services がクライアント デバイスに保存するメタデータを暗号化できます。 暗号化動作を決定するには、 MetadataMode 列挙型の値を使用します。
アプリのメタデータを暗号化するには:
Realm
MetadataMode
をインポートし、他の依存関係をインポートします。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> ); };