Unity용 Firebase 실시간 데이터베이스 시작하기

Firebase 실시간 데이터베이스는 NoSQL 클라우드 데이터베이스를 사용하여 데이터를 저장하고 동기화합니다. 모든 클라이언트에서 실시간으로 데이터가 동기화되고 앱이 오프라인일 때도 데이터를 사용할 수 있습니다.

시작하기 전에

Firebase 실시간 데이터베이스를 사용하려면 우선 Firebase 프로젝트를 만들고 Unity 프로젝트에 Firebase Unity SDK 패키지를 추가해야 합니다.

설정:

기본 요건

Android

iOS

  • Unity 5.0 이상
  • Xcode 8.0 이상

Unity 프로젝트를 준비하지 않았다면 빠른 시작 샘플 중 하나를 다운로드하여 특정 Firebase 기능을 시험해 볼 수 있습니다. 빠른 시작을 사용한다면 프로젝트 설정에서 번들 식별자를 확인해야 합니다. 다음 단계에서 이 식별자가 필요합니다.

Firebase 콘솔에서 앱 설정

앱에 Firebase를 추가하려면 Firebase 프로젝트 및 앱의 Firebase 구성 파일이 필요합니다.

Firebase 프로젝트를 만드는 방법은 다음과 같습니다.

  1. Firebase 콘솔로 이동합니다.

  2. 프로젝트 추가를 클릭한 다음, 프로젝트 이름을 선택하거나 입력합니다.

    • 앱에 연결된 기존 Google 프로젝트가 있으면 프로젝트 이름 드롭다운 메뉴에서 프로젝트를 선택합니다.
    • 기존 Google 프로젝트가 없으면 새 프로젝트 이름을 입력합니다.
  3. (선택사항) 프로젝트 ID를 수정합니다.

    Firebase는 Firebase 프로젝트에 자동으로 고유한 ID를 할당합니다. 이 식별자는 공개적으로 표시되는 Firebase 서비스에 나타납니다. 예를 들면 다음과 같습니다.

    • 기본 데이터베이스 URL — your-project-id.firebaseio.com
    • 기본 호스팅 하위 도메인 — your-project-id.firebaseapp.com
  4. 나머지 설정 단계를 따른 다음 프로젝트 만들기(또는 기존 Google 프로젝트를 사용하는 경우 Firebase 추가)를 클릭합니다.

Firebase에서 Firebase 프로젝트용 리소스를 자동으로 프로비저닝합니다. 이 프로세스는 일반적으로 몇 분 정도 걸립니다. 프로세스가 완료되면 Firebase 콘솔에서 Firebase 프로젝트의 개요 페이지로 이동됩니다.

Android

  1. Android 앱에 Firebase 추가를 클릭하고 설정 단계를 따릅니다. 기존 Google 프로젝트를 가져오면 이 단계가 자동으로 이루어지므로 구성 파일만 다운로드하면 됩니다.
  2. 메시지가 표시되면 앱의 패키지 이름을 입력합니다. 앱에서 사용하는 패키지 이름을 입력해야 합니다. 이 설정은 Firebase 프로젝트에 앱을 추가할 때만 가능합니다.
  3. 이 과정에서 google-services.json 파일을 다운로드하게 됩니다. 언제든지 다시 이 파일을 다운로드할 수 있습니다.
  4. 초기화 코드를 추가한 후 앱을 실행하여 Firebase를 성공적으로 설치했다는 확인을 Firebase 콘솔에 보냅니다.

iOS

  1. iOS 앱에 Firebase 추가를 클릭하고 설정 단계를 따릅니다. 기존 Google 프로젝트를 가져오면 이 단계가 자동으로 이루어지므로 구성 파일만 다운로드하면 됩니다.
  2. 메시지가 표시되면 앱의 번들 ID를 입력합니다. 앱에서 사용하는 번들 ID를 입력해야 합니다. 이 설정은 Firebase 프로젝트에 앱을 추가할 때만 가능합니다.
  3. 이 과정에서 GoogleService-Info.plist 파일을 다운로드하게 됩니다. 언제든지 다시 이 파일을 다운로드할 수 있습니다.
  4. 초기화 코드를 추가한 후 앱을 실행하여 Firebase를 성공적으로 설치했다는 확인을 Firebase 콘솔에 보냅니다.
  5. Firebase 콘솔에서 다운로드한 GoogleService-Info.plist를 드래그하여 Unity 프로젝트의 원하는 폴더에 넣습니다.

앱에 Firebase Unity SDK 추가

  1. Firebase Unity SDK를 다운로드합니다.
  2. 애셋 > 패키지 가져오기 > 맞춤 패키지 메뉴 항목을 선택합니다.
  3. 사용하는 Unity 버전과 일치하는 디렉토리에서 FirebaseDatabase.unitypackage 를 가져옵니다.
    • Unity 5.x 이전 버전에서는 .NET 3.x 프레임워크를 사용하므로 dotnet3/FirebaseDatabase.unitypackage 패키지를 가져와야 합니다.
    • Unity 2017.x 이상 버전에서는 .NET 4.x 프레임워크를 사용할 수 있습니다. 프로젝트가 .NET 4.x를 사용하도록 구성된 경우 dotnet4/FirebaseDatabase.unitypackage 패키지를 가져옵니다.
  4. Unity 패키지 가져오기 창이 나타나면 가져오기 버튼을 클릭합니다.

SDK 초기화

Google Play 서비스가 최신 상태여야 Android의 Firebase Unity SDK를 사용할 수 있습니다. Firebase Unity SDK에서 다른 메소드를 호출하기 전에 애플리케이션의 시작 부분에 다음 코드를 추가하여 Google Play 서비스를 확인하고 필요한 경우 SDK에 필요한 버전으로 업데이트해야 합니다.

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp, i.e.
    //   app = Firebase.FirebaseApp.DefaultInstance;
    // where app is a Firebase.FirebaseApp property of your application class.

    // Set a flag here indicating that Firebase is ready to use by your
    // application.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

앱 빌드

Android

  1. File(파일) > Build Settings(빌드 설정) 메뉴 옵션을 선택합니다.
  2. Platform(플랫폼) 목록에서 Android를 선택합니다.
  3. Switch Platform(플랫폼 전환)을 클릭하여 타겟 플랫폼으로 Android를 선택합니다.
  4. Unity 상태 표시줄 오른쪽 하단의 스피너(컴파일) 아이콘이 멈추기를 기다립니다.
  5. Build and Run(빌드 및 실행)을 클릭합니다.

iOS

  1. File(파일) > Build Settings(빌드 설정) 메뉴 옵션을 선택합니다.
  2. Platform(플랫폼) 목록에서 iOS를 선택합니다.
  3. Switch Platform(플랫폼 전환)을 클릭하여 타겟 플랫폼으로 iOS를 선택합니다.
  4. Unity 상태 표시줄 오른쪽 하단의 스피너(컴파일) 아이콘이 멈추기를 기다립니다.
  5. Build and Run(빌드 및 실행)을 클릭합니다.

공개 액세스 설정

실시간 데이터베이스가 제공하는 선언적 규칙 언어로 데이터의 구조, 색인 생성 방법 및 데이터를 읽거나 쓸 수 있는 조건을 정의할 수 있습니다. 기본적으로 데이터베이스에 대한 읽기 및 쓰기 액세스는 인증된 사용자만 데이터를 읽거나 쓸 수 있도록 제한되어 있습니다. 공개 액세스에 대한 규칙을 구성하여 인증을 설정하지 않고 시작할 수 있습니다. 이렇게 하면 앱을 사용하지 않는 사람을 포함하여 모두에게 데이터베이스가 공개되므로 인증을 설정할 때 데이터베이스를 다시 제한해야 합니다.

Unity 편집기용 SDK 구성

Unity 편집기에서 장면을 테스트할 때 실시간 데이터베이스를 사용할 수 있습니다. 올바른 데이터베이스 URL로 SDK를 구성한 후 데이터베이스 URL로 SetEditorDatabaseUrl을 호출하면 됩니다.

using Firebase;
using Firebase.Unity.Editor;

public class MyScript: MonoBehaviour {
  void Start() {
    // Set this before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
  }
}

규칙에서 공개 액세스를 사용하기로 결정했고 데이터베이스 URL을 설정했다면 데이터 저장 및 검색에 대한 섹션으로 이동하세요.

(선택사항) 제한된 액세스를 위한 편집기 설정

공개 액세스를 금지하는 규칙을 사용하려면 Unity 편집기에서 서비스 계정을 사용하도록 SDK를 구성해야 합니다. 이렇게 하면 테스트 하는 동안 최종 사용자로 가장하는 것도 가능합니다. 이와 같이 하려면 우선 다음 주소에서 새 p12 파일을 만듭니다.

https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=YOUR-FIREBASE-APP

서비스 계정의 생성된 이메일 주소와 비밀번호를 기록해 둡니다.

Unity 프로젝트에서 'Editor Default Resources'에 p12 파일을 배치합니다. 다음으로, 아래 코드를 추가하여 서비스 계정 사용을 초기화합니다.

using Firebase;
using Firebase.Unity.Editor;

public class MyScript: MonoBehaviour {
  void Start() {
    // Set these values before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
    FirebaseApp.DefaultInstance.SetEditorP12FileName("YOUR-FIREBASE-APP-P12.p12");
    FirebaseApp.DefaultInstance.SetEditorServiceAccountEmail("SERVICE-ACCOUNT-ID@YOUR-FIREBASE-APP.iam.gserviceaccount.com");
    FirebaseApp.DefaultInstance.SetEditorP12Password("notasecret");
  }
}

다음 단계

알려진 문제

  • 실험 단계인 .NET 4.6 프레임워크를 사용하는 경우, Unity 2017.2를 설치한 macOS에서 2017.2.0에 적용된 회귀로 인해 해당 구성의 SslStream이 오작동하여 실시간 데이터베이스가 작동하지 않습니다. 이 회귀는 2017.3.0에서 수정되었으므로 해당 버전에서는 실시간 데이터베이스가 정상 작동합니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.