Realm ファイルのバンドル - React Native SDK
Realm は Realm ファイルのバンドルをサポートしています。 Realm ファイルをバンドルする場合、データベースとそのすべてのデータをアプリケーションのダウンロードに含めます。
これにより、ユーザーは初期データセットを使用して初めてアプリケーションを起動できます。 同期済み Realm の場合、バンドルにより、ユーザーが初めてアプリケーションを開くときに長時間かかる初期ダウンロードを回避できます。 代わりに、ユーザーは、バンドル ファイルの生成以降に発生した同期された変更のみをダウンロードする必要があります。
重要
ローカル Realm にのみ適用
このページのコンテンツは、ローカル Realm にのみ適用されます。
手順
React Native アプリケーション用の Realm ファイルを作成してバンドルするには、次の手順に従います。
バンドルする Realm ファイルの作成
React Native アプリ用のバンドルされた Realm を作成する最も簡単な方法は、バンドルを作成するための別の Node.js スクリプトを記述します。
バンドルを作成するには、 @realm/react
ではなく、 realm
パッケージを使用する必要があります。
アプリケーションのデータモデルを共有する一時的な Realm アプリを構築します。
Realm を開き、バンドルするデータを追加します。 同期された Realm を使用する場合は、Realm が完全に同期するまで時間を待ちます。
create- Bundled-realm.jsimport Realm from "realm"; import { Dog } from "./schemas"; // open realm const config = { schema: [Dog], path: "bundle.realm", }; const realm = await Realm.open(config); // add data to realm realm.write(() => { realm.create("Dog", { name: "Jasper", age: 10, type: "Golden Retriever" }); realm.create("Dog", { name: "Maggie", age: 12, type: "Collie" }); realm.create("Dog", { name: "Sophie", age: 6, type: "German Shepard" }); }); realm.close(); バンドルされている Realm ファイルのファイルパスに注意してください。 次のセクションで説明されているように、本番アプリケーションでバンドルされた Realm を使用するにはこのファイルが必要になります。
temp_realm_app. ├── bundle.realm ... rest of files in _temp_ application
アプリに Realm ファイルをバンドルする
初期データを含む Realm のコピーが作成できたら、バンドルされている Realm ファイルを本番アプリケーションに追加します。 バンドルされている Realm を配置する場所は、iOS と Android のビルドで異なります。
Android Studio で React Native によって生成された
android
フォルダーを開きます。Projectツリーで、
app > src > main
に移動します。main
ディレクトリを右クリックします。assets
という名前の新しいサブディレクトリを作成します。バンドルされている Realm ファイルを
assets
ディレクトリにドラッグします。
Xcode で、React Native によって生成された
ios
ディレクトリ内のyour_project_name.xcworkspace
ファイルを開きます。プロジェクト ナビゲータでアプリを選択し、プロジェクト概要で [ Build Phases ] タブを選択します。
Copy Bundle Resourcesアイテムを展開します。
+アイコンをクリックします。
Add Other...ボタンをクリックします。
バンドルされた Realm ファイルを見つけて追加します。 デフォルト設定を変更せず、 Finishボタンを選択します。
アプリで Bundle Realm を開きます
Realm はバンドルされており、ユーザーがアプリをダウンロードするときに含まれます。 バンドルされている Realm ファイルをアプリのドキュメント ディレクトリに追加するには、 Realm. copyBundedRealmFiles()を呼び出します Realm を開く前に、
Realm.copyBundledRealmFiles()
は、アプリケーション バンドルからすべての*.realm
ファイルをアプリケーション ドキュメント ディレクトリに追加します。 このメソッドは同じ名前の既存のファイルを上書きしないため、アプリを起動するたびに呼び出しても安全です。
バンドルされた Realm を最初に作成したときに指定した名前と構成で、バンドルされた Realm を開きます。
本番アプリケーションに含まれる Realm のコピーが作成できたら、それを使用するためのコードを追加する必要があります。
import React from 'react'; import {createRealmContext, Realm} from '@realm/react'; import {Dog} from './schema'; Realm.copyBundledRealmFiles(); const realmContext = createRealmContext({schema: [Dog], path: 'bundle.realm'}); const {RealmProvider} = realmContext; export default function OpenBundledRealm() { return ( <RealmProvider> {/* Rest of app has access to objects pre-populated in the bundled realm. */} <RestOfApp /> </RealmProvider> ); }