Atlas App Services アプリへの接続 - React Native SDK
項目一覧
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> ); };
特定のサーバーへの接続
デフォルトでは、Atlas Device SDK はhttps://services.cloud.mongodb.com
のグローバルbaseURL
を使用して Atlas に接続します。 場合によっては、別のサーバーに接続する必要があるかもしれません。
App Services Appはローカル配置を使用しており、リージョン内のローカル
baseURL
に直接接続する場合があります。
AppProviderのプロパティとしてbaseURL
を指定できます。 すべてのAppConfigurationキーは、プロパティとしてAppProvider
に渡すことができます。
実行中に別のサーバーへの接続
バージョンrealm@12.8.0
で変更されました。
場合によっては、アプリが の実行中中にbaseURL
を変更する必要があるかもしれません。
現在、この機能は特定のTypescript構成を必要とする実験的なモジュールとして実装されています。 必要な構成は、React Native アプリで動作させるのが困難な場合があります。 実装の詳細については、 Node.js SDK のドキュメントを参照してください。