Cloud Storage for Firebase를 사용하면 이미지와 동영상 등 사용자 제작 콘텐츠를 업로드 및 공유하여 앱에 리치 미디어 콘텐츠를 빌드할 수 있습니다. 데이터는 고가용성과 글로벌 중복성을 갖춘 엑사바이트급 객체 스토리지 솔루션인 Google Cloud Storage 버킷에 저장됩니다. Cloud Storage for Firebase를 사용하면 이러한 파일을 휴대기기와 웹브라우저에서 직접 안전하게 업로드할 수 있으며 네트워크가 불안정해도 문제가 없습니다.
시작하기 전에
- Apple 플랫폼 앱 시작 가이드를 아직 완료하지 않았으면 완료하세요. 여기에는 다음이 포함됩니다. - Firebase 프로젝트 만들기 
- 프로젝트에 Apple 플랫폼 앱을 등록하고 Firebase 라이브러리와 Firebase 구성 파일( - GoogleService-Info.plist)을 앱에 추가하여 앱을 Firebase에 연결합니다.
 
- Firebase 프로젝트에서 사용한 만큼만 지불하는 Blaze 요금제를 사용하고 있는지 확인합니다. 이는 2024년 10월부터 적용된 요구사항입니다(FAQ 참고). Firebase와 Google Cloud를 처음 사용하는 경우 $300 크레딧을 받을 자격이 되는지 확인하세요. 
기본 Cloud Storage 버킷 만들기
- Firebase Console의 탐색창에서 Storage를 선택합니다. - 프로젝트에서 아직 사용한 만큼만 지불하는 Blaze 요금제를 사용하고 있지 않으면 프로젝트를 업그레이드하라는 메시지가 표시됩니다. 
- 시작하기를 클릭합니다. 
- 기본 버킷 위치를 선택합니다. - US-CENTRAL1- US-EAST1- US-WEST1
- 원하는 경우 나중에 고유한 위치를 가진 버킷을 여러 개 만들 수 있습니다. 
 
- 기본 버킷의 Firebase Security Rules를 구성합니다. 개발 중에 공개 액세스 규칙을 설정하는 것이 좋습니다. 
- 완료를 클릭합니다. 
이제 Firebase Console의 Cloud Storage 파일 탭에서 버킷을 볼 수 있습니다. 기본 버킷 이름 형식은 PROJECT_ID.firebasestorage.app
공개 액세스 설정
Cloud Storage for Firebase에서 제공하는 선언적 규칙 언어로 데이터 구조화 방법, 색인 생성 방법, 데이터를 읽고 쓸 수 있는 시기를 정의할 수 있습니다. 기본적으로 Cloud Storage에 대한 읽기 및 쓰기 액세스는 인증된 사용자만 데이터를 읽거나 쓸 수 있도록 제한됩니다. 공개 액세스 규칙을 구성하면 Authentication을 설정하지 않고 시작할 수 있습니다.
이렇게 하면 앱을 사용하지 않는 사람을 포함하여 모두에게 Cloud Storage가 공개되므로 인증을 설정할 때 Cloud Storage를 다시 제한해야 합니다.
앱에 Cloud Storage 추가
Swift Package Manager를 사용해 Firebase 종속 항목을 설치하고 관리하세요.
- 앱 프로젝트를 연 상태로 Xcode에서 File(파일) > Add Packages(패키지 추가)로 이동합니다.
- 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.
- Cloud Storage 라이브러리를 선택합니다.
- 타겟 빌드 설정의 Other Linker Flags(기타 링커 플래그) 섹션에 -ObjC플래그를 추가합니다.
- 완료되면 Xcode가 백그라운드에서 자동으로 종속 항목을 확인하고 다운로드하기 시작합니다.
https://github.com/firebase/firebase-ios-sdk.git
앱에서 Cloud Storage 설정
- Firebase 참조를 만들거나 사용하기 전에 Firebase를 초기화합니다. - 이미 다른 Firebase 제품을 설정한 경우 이미 이 작업을 완료했을 수 있지만 - FirebaseStorage라이브러리를 가져오기 목록에 추가해야 합니다.- UIApplicationDelegate에서- FirebaseCore모듈과- FirebaseStorage모듈을 가져옵니다.- FirebaseAuth를 추가하는 것도 좋습니다.- SwiftUI- import SwiftUI import FirebaseCore import FirebaseStorage import FirebaseAuth // ...- Swift- import FirebaseCore import FirebaseStorage import FirebaseAuth // ...- Objective-C- @import FirebaseCore; @import FirebaseStorage; @import FirebaseAuth; // ...
- 앱 대리자의 - application(_:didFinishLaunchingWithOptions:)메서드에서- FirebaseApp공유 인스턴스를 구성합니다.- SwiftUI- // Use Firebase library to configure APIs FirebaseApp.configure()- Swift- // Use Firebase library to configure APIs FirebaseApp.configure()- Objective-C- // Use Firebase library to configure APIs [FIRApp configure];
- (SwiftUI만 해당) 애플리케이션 대리자를 만들고 - UIApplicationDelegateAdaptor또는- NSApplicationDelegateAdaptor를 사용하여- App구조체에 연결합니다. 앱 대리자 재구성도 중지해야 합니다. 자세한 내용은 SwiftUI 안내를 참조하세요.- SwiftUI- @main struct YourApp: App { // Register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
 
- 기본 Firebase 앱을 사용하여 Cloud Storage 서비스에 대한 참조를 가져옵니다. - 앱의 코드베이스에 있는 Firebase 구성 파일( - GoogleService-Info.plist)이 기본 Cloud Storage 버킷의 이름으로 업데이트되었는지 확인합니다.
- 다운로드한 이 구성 파일을 사용하여 Xcode 프로젝트의 루트에 있는 기존 - GoogleService-Info.plist파일을 교체합니다. 메시지가 표시되면 선택하여 모든 대상에 구성 파일을 추가합니다.- 앱에 다운로드한 이 최신 구성 파일만 있고 파일 이름에 - (2)와 같은 문자가 추가되지 않았는지 확인합니다.
 
- 기본 Firebase 앱을 사용하여 Cloud Storage 서비스에 대한 참조를 가져옵니다. - Swift- let storage = Storage.storage() - // Alternatively, explicitly specify the bucket name URL. storage = Storage.storage(url:"gs://BUCKET_NAME") - Objective-C- FIRStorage *storage = [FIRStorage storage]; - // Alternatively, explicitly specify the bucket name URL. // FIRStorage storage = [FIRStorage storageWithURL:@"gs://BUCKET_NAME"]; 
 
이제 Cloud Storage 사용 준비가 완료되었습니다.
다음 단계 Cloud Storage 참조를 만드는 방법을 알아보세요.
고급 설정
다음 사용 사례에는 추가 설정이 필요합니다.
- 여러 지리적 리전에서 Cloud Storage 버킷 사용
- 다양한 스토리지 클래스에서 Cloud Storage 버킷 사용
- 동일한 앱에서 인증된 여러 사용자로 Cloud Storage 버킷 사용
첫 번째 사용 사례는 사용자가 전 세계에 분포해 있고 사용자와 가까운 곳에 데이터를 저장하려는 경우에 적합합니다. 예를 들어 미국, 유럽, 아시아에 버킷을 만들고 해당 리전 사용자의 데이터를 저장하면 지연 시간을 줄일 수 있습니다.
두 번째 사용 사례는 데이터의 액세스 패턴이 다양할 때 유용합니다. 예를 들어 사진과 같은 자주 액세스하는 콘텐츠를 저장하는 멀티 리전 또는 리전 버킷을 설정하고, 사용자 백업과 같은 자주 액세스하지 않는 콘텐츠를 저장하는 Nearline 또는 Coldline 버킷을 설정할 수 있습니다.
이러한 두 사용 사례에는 여러 Cloud Storage 버킷을 사용하는 것이 좋습니다.
세 번째 사용 사례는 Google Drive와 같이 사용자가 여러 개의 계정(예: 개인용 계정과 업무용 계정)으로 로그인할 수 있는 앱을 빌드할 때 유용합니다. 커스텀 Firebase 앱 인스턴스를 사용하여 추가 계정을 각각 인증할 수 있습니다.
여러 Cloud Storage 버킷 사용
위에 제공된 기본값 이외의 Cloud Storage 버킷을 사용하거나 단일 앱에서 여러 Cloud Storage 버킷을 사용하려는 경우 커스텀 버킷을 참조하는 FIRStorage 인스턴스를 만들 수 있습니다.
Swift
// Get a non-default Cloud Storage bucket storage = Storage.storage(url:"gs://my-custom-bucket")
Objective-C
// Get a non-default Cloud Storage bucket FIRStorage storage = [FIRStorage storageWithURL:@"gs://my-custom-bucket"];
가져온 버킷 활용하기
기존 Cloud Storage 버킷을 Firebase로 가져오는 경우 Google Cloud SDK에 포함된 gsutil 도구를 사용하여 Firebase가 버킷의 파일에 액세스할 수 있도록 권한을 부여해야 합니다.
gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME
Firebase 프로젝트 소개의 설명대로 프로젝트 번호를 확인할 수 있습니다.
새로 생성된 버킷은 액세스 제어에서 Firebase를 허용하도록 기본 설정되어 있으므로 이에 영향을 받지 않습니다. 이는 일시적인 조치로 향후 자동으로 수행될 예정입니다.
커스텀 Firebase 앱 사용
커스텀 FirebaseApp을 사용하여 보다 복잡한 앱을 빌드하는 경우 해당 앱으로 초기화된 Storage 인스턴스를 만들 수 있습니다.
Swift
// Get the default bucket from a custom FirebaseApp storage = Storage.storage(app:customApp) // Get a non-default bucket from a custom FirebaseApp storage = Storage.storage(app:customApp, url:"gs://my-custom-bucket")
Objective-C
// Get the default bucket from a custom FIRApp FIRStorage storage = [FIRStorage storageForApp:customApp]; // Get a non-default bucket from a custom FIRApp FIRStorage storage = [FIRStorage storageForApp:customApp withURL:@"gs://my-custom-bucket"];
다음 단계
- 앱 출시 준비 - 내 앱만 스토리지 버킷에 액세스할 수 있도록 App Check를 사용 설정합니다. 
- Google Cloud 콘솔에서 프로젝트의 예산 알림을 설정합니다. 
- Firebase Console에서 사용량 및 결제 대시보드를 모니터링하여 프로젝트의 여러 Firebase 서비스 사용량을 전체적으로 파악합니다. 사용량 정보에 대한 자세한 내용은 Cloud Storage 사용량 대시보드에서도 확인할 수 있습니다. 
- Firebase 출시 체크리스트를 검토합니다.