콘솔로 이동

C++용 Cloud Storage 시작하기

Firebase용 Cloud Storage를 사용하면 이미지 및 동영상 등의 사용자 제작 콘텐츠를 업로드 및 공유하여 앱에 리치 미디어 콘텐츠를 도입할 수 있습니다. 데이터는 고가용성과 글로벌 중복성을 갖춘 엑사바이트급 객체 저장소 솔루션인 Google Cloud Storage 버킷에 저장됩니다. Cloud Storage로 휴대기기 및 웹브라우저에서 이러한 파일을 안전하게 즉시 업로드할 수 있으며 네트워크가 불안정해도 문제가 없습니다.

시작하기 전에

Android

  1. 아직 Firebase 프로젝트에 앱을 연결하지 않았다면 Firebase 콘솔에서 연결합니다.
  2. Android 프로젝트에 Firebase를 추가합니다.
  3. 앱 수준 build.gradle 파일에 Cloud Storage에 대한 종속 항목을 추가합니다.
    dependencies {
     implementation 'com.google.firebase:firebase-storage:16.1.0'
    }
  4. C++ SDK에서 libapp.alibstorage.a 정적 라이브러리를 연결합니다.

iOS

  1. 아직 Firebase 프로젝트에 앱을 연결하지 않았다면 Firebase 콘솔에서 연결합니다.
  2. iOS 프로젝트에 Firebase를 추가합니다.
  3. Podfile에 다음 Pod를 포함합니다.
    pod 'Firebase/Storage'
  4. pod install을 실행합니다.
  5. C++ SDK에서 Xcode 프로젝트에 firebase.frameworkfirebase_storage.framework를 추가합니다.

공개 액세스 설정

Firebase용 Cloud Storage가 제공하는 선언적 규칙 언어로 데이터의 구조, 색인 생성 방법, 데이터를 읽거나 쓸 수 있는 조건을 정의할 수 있습니다. 기본적으로 저장소에 대한 읽기 및 쓰기 액세스는 인증된 사용자만 가능하도록 제한됩니다. 공개 액세스에 대한 규칙을 구성하면 인증을 설정하지 않고 시작할 수 있습니다.

이렇게 하면 앱을 사용하지 않는 사람을 포함하여 모두에게 저장소가 공개되므로 인증을 설정할 때 저장소를 다시 제한해야 합니다.

firebase::App 만들기 및 초기화

저장소에 액세스하려면 우선 firebase::App을 만들고 초기화해야 합니다.

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

#include "firebase/app.h"

Android

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

app = App::Create(AppOptions(), jni_env, activity);

iOS

firebase::App을 만듭니다.

app = App::Create(AppOptions());

firebase::storage::Storage 클래스 액세스

firebase::storage::Storage 클래스는 Cloud Storage C++ SDK의 진입점입니다.

Storage* storage = Storage::GetInstance(app);

이제 Cloud Storage를 사용할 준비가 끝났습니다.

먼저 Cloud Storage 참조를 만드는 방법을 알아보겠습니다.

고급 설정

다음 사용 사례에는 추가 설정이 필요합니다.

첫 번째 사용 사례는 사용자가 전 세계에 분포해 있고 사용자와 가까운 곳에 데이터를 저장하려는 경우에 적합합니다. 예를 들어 미국, 유럽, 아시아에 버킷을 만들고 해당 지역 사용자의 데이터를 저장하면 지연 시간을 줄일 수 있습니다.

두 번째 사용 사례는 데이터의 액세스 패턴이 다양할 때 유용합니다. 예를 들어 사진과 같은 자주 액세스하는 콘텐츠를 저장하는 다중 지역 또는 지역 버킷을 설정하고, 사용자 백업과 같은 자주 액세스하지 않는 콘텐츠를 저장하는 Nearline 또는 Coldline 버킷을 설정할 수 있습니다.

이러한 두 사용 사례에는 여러 저장소 버킷을 사용하는 것이 좋습니다.

세 번째 사용 사례는 Google 드라이브와 같이 사용자가 여러 개의 계정(예: 개인용 계정과 업무용 계정)으로 로그인할 수 있는 앱을 개발할 때 유용합니다. 맞춤 Firebase 앱 인스턴스를 사용하여 추가 계정을 각각 인증할 수 있습니다.

여러 저장소 버킷 사용

위에 제공된 기본값 이외의 저장소 버킷을 사용하거나 단일 앱에서 여러 저장소 버킷을 사용하려는 경우 맞춤 버킷을 참조하는 firebase::storage::Storage 인스턴스를 만들 수 있습니다.

// Get a non-default Storage bucket
Storage* storage = Storage::GetInstance("gs://my-custom-bucket");

가져온 버킷 다루기

기존 Cloud Storage 버킷을 Firebase로 가져오는 경우 Google Cloud SDK에 포함된 gsutil 도구를 사용하여 Firebase가 해당 파일을 액세스할 수 있도록 권한을 부여해야 합니다.

gsutil -m acl ch -r -u firebase-storage@system.gserviceaccount.com:O gs://<your-cloud-storage-bucket>

새로 생성된 버킷은 액세스 제어가 기본으로 Firebase를 허용하도록 설정되어 있으므로 이에 영향을 받지 않습니다. 이는 일시적인 조치이며 앞으로는 자동으로 수행될 예정입니다.

맞춤 Firebase 앱 사용

맞춤 firebase::App을 사용하여 보다 복잡한 앱을 개발하면 해당 앱으로 초기화된 firebase::storage::Storage 인스턴스를 만들 수 있습니다.

// Get the default bucket from a custom firebase::App
Storage* storage = Storage::GetInstance(customApp);

// Get a non-default bucket from a custom firebase::App
Storage* storage = Storage::GetInstance(customApp, "gs://my-custom-bucket");