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

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

시작하기 전에

Firebase 실시간 데이터베이스를 사용하려면 우선 다음을 수행해야 합니다.

  • C++ 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.

    C++ 프로젝트에서 현재 Firebase를 사용하고 있다면 이미 등록되어 Firebase용으로 구성된 상태입니다.

  • C++ 프로젝트에 Firebase C++ SDK를 추가합니다.

C++ 프로젝트에 Firebase를 추가할 때 Firebase Console 및 열려 있는 C++ 프로젝트 모두에서 작업을 수행해야 합니다. 예를 들어 Console에서 Firebase 구성 파일을 다운로드한 후 이 파일을 C++ 프로젝트로 옮기는 작업이 필요합니다.

데이터베이스 만들기

  1. Firebase Console실시간 데이터베이스 섹션으로 이동합니다. 기존 Firebase 프로젝트를 선택하라는 메시지가 표시됩니다. 데이터베이스 만들기 워크플로를 따릅니다.

  2. Firebase 보안 규칙의 시작 모드를 선택합니다.

    테스트 모드

    모바일과 웹 클라이언트 라이브러리를 시작할 때 유용하지만 모든 사용자가 데이터를 읽고 덮어쓸 수 있습니다. 테스트 완료 후 Firebase 실시간 데이터베이스 규칙 이해 섹션을 검토해야 합니다.

    웹, Apple 또는 Android SDK를 시작하려면 테스트 모드를 선택하세요.

    잠금 모드

    모바일과 웹 클라이언트의 모든 읽기와 쓰기를 거부합니다. 인증된 애플리케이션 서버에서는 사용자의 데이터베이스에 계속 액세스할 수 있습니다.

  3. 데이터베이스의 위치를 선택합니다.

    데이터베이스 위치에 따라 새 데이터베이스의 URL이 다음 형식 중 하나로 지정됩니다.

    • DATABASE_NAME.firebaseio.com(us-central1의 데이터베이스)

    • DATABASE_NAME.REGION.firebasedatabase.app(다른 모든 위치의 데이터베이스)

  4. 완료를 클릭합니다.

실시간 데이터베이스를 사용 설정하면 Cloud API Manager의 API도 사용 설정됩니다.

firebase::App 만들기 및 초기화

실시간 데이터베이스에 액세스하려면 우선 firebase::App을 만들고 초기화해야 합니다.

firebase::App의 헤더 파일을 포함합니다.

#include "firebase/app.h"

Android

자바 액티비티에 JNI 환경과 jobject 참조를 인수로 전달하여 firebase::App을 만듭니다.

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS+

firebase::App을 만듭니다.

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

firebase::database::Database 클래스 액세스

firebase::database::Database는 Firebase 실시간 데이터베이스 C++ SDK의 진입점입니다.

::firebase::database::Database *database = ::firebase::database::Database::GetInstance(app);

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

제한된 액세스 설정

공개 액세스를 사용하지 않으려면 앱에 Firebase 인증을 추가하여 데이터베이스에 대한 액세스를 관리하세요.

다음 단계

알려진 문제

  • 데스크톱 플랫폼(Windows, Mac, Linux)에서 Firebase C++ SDK는 REST를 사용하여 데이터베이스에 액세스합니다. 따라서 데스크톱에서 Query::OrderByChild()를 실행해 사용할 색인을 선언해야 하며, 그렇지 않으면 리스너가 작동하지 않습니다.
  • 실시간 데이터베이스의 데스크톱 워크플로 버전은 오프라인 또는 지속성을 지원하지 않습니다.