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 列挙型の値を使用します。
アプリのメタデータを暗号化するには:
RealmMetadataModeをインポートし、他の依存関係をインポートします。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> ); };