문서 메뉴

문서 홈애플리케이션 개발Atlas Device SDK

Realm 파일 번들 - React Native SDK

이 페이지의 내용

  • 절차
  • 번들할 Realm 파일 만들기
  • 앱에 Realm 파일 번들
  • 앱에서 번들 Realm 열기

Realm은 Realm 파일 번들 을 지원합니다. Realm 파일을 번들로 제공하면 애플리케이션 다운로드에 데이터베이스와 모든 해당 데이터가 포함됩니다.

이를 통해 사용자는 초기 데이터 세트로 애플리케이션을 처음 시작할 수 있습니다. 동기화된 Realm의 경우 번들을 사용하면 사용자가 애플리케이션을 처음 열 때 시간이 오래 걸리는 초기 다운로드를 방지할 수 있습니다. 대신 사용자는 번들 파일을 생성한 이후에 동기화된 변경 사항만 다운로드해야 합니다.

중요

로컬 Realm에만 적용

이 페이지의 내용은 로컬 영역에만 적용됩니다.

경고

다음 단계에 따라 React Native 애플리케이션을 위한 Realm 파일을 만들고 번들로 만들 수 있습니다.

1

React Native 앱에 번들 영역을 생성하는 가장 쉬운 방법은 별도의 Node.js 스크립트를 작성하여 번들을 생성하는 것입니다.

번들을 생성하려면 @realm/react 대신 realm 패키지를 사용해야 합니다.

  1. 애플리케이션의 데이터 모델을 공유하는 임시 Realm 앱을 빌드합니다.

  2. Realm을 열고 번들로 제공하려는 데이터를 추가합니다. 동기화된 Realm을 사용하는 경우 Realm이 완전히 동기화될 때까지 기다립니다.

    create-bundled-realm.js
    import 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();
  3. 번들 Realm 파일의 파일 경로를 확인합니다. 다음 섹션에 설명된 대로 프로덕션 애플리케이션에서 번들 영역을 사용하려면 이 파일이 필요합니다.

    temp_realm_app
    .
    ├── bundle.realm
    ... rest of files in _temp_ application
2

이제 초기 데이터가 포함된 Realm의 복사본이 있으므로 번들로 제공되는 Realm 파일을 프로덕션 애플리케이션에 추가합니다. 번들 Realm을 배치하는 위치는 iOS 및 Android 빌드에 따라 다릅니다.

3

이제 Realm은 번들로 제공되며 사용자가 앱을 다운로드할 때 포함됩니다. 번들 Realm 파일을 앱의 문서 디렉토리에 추가하려면 Realm을 열기 전에 Realm.copyBundledRealmFiles() 를 호출합니다.

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>
);
}
← Realm 구성 - React Native SDK