[swift] Swift FirebaseUI를 사용하여 클라우드 저장소 구현하기

Firebase는 Google에서 제공하는 클라우드 기반의 백엔드 서비스로, 앱에 백엔드 인프라를 쉽게 구축할 수 있습니다. FirebaseUI는 Firebase와 통합되는 UI 컴포넌트를 제공하여 앱에서 Firebase 기능을 쉽게 구현할 수 있게 도와줍니다. 이번 튜토리얼에서는 Swift FirebaseUI를 사용하여 클라우드 저장소를 구현하는 방법을 알아보겠습니다.

전제 조건

  1. Firebase 프로젝트를 생성하고 Firebase SDK를 앱에 통합했어야 합니다. Firebase 프로젝트 생성 및 SDK 통합 방법은 Firebase 공식 문서를 참조하십시오.

FirebaseUI 설치

FirebaseUI를 사용하여 클라우드 저장소를 구현하려면 FirebaseUI의 Storage 모듈을 설치해야 합니다. CocoaPods를 사용하거나 Swift Package Manager를 통해 FirebaseUI를 설치할 수 있습니다. 여기서는 CocoaPods를 사용하는 예를 보여드리겠습니다.

  1. Podfile을 열고 다음 라인을 추가합니다:
    pod 'FirebaseUI/Storage'
    
  2. 터미널을 열고 프로젝트 폴더로 이동한 다음, 다음 명령을 실행합니다:
    pod install
    
  3. CocoaPods가 FirebaseUI와 관련된 종속성을 다운로드하고 프로젝트에 통합합니다.

FirebaseUI로 클라우드 저장소 구현하기

  1. FirebaseUI를 사용하여 이미지를 업로드하는 간단한 예제를 살펴보겠습니다.

  2. 먼저 FirebaseUI를 import 하여 FirebaseUI 모듈을 사용할 수 있도록 해야 합니다:
    import FirebaseUI
    
  3. 업로드할 이미지를 선택하기 위해 UIImagePickerController를 사용할 수 있습니다. UIImagePickerControllerDelegate 및 UINavigationControllerDelegate 프로토콜을 준수하도록 클래스를 구현해야 합니다.

  4. UIImagePickerController 설정과 이미지 선택을 처리하기 위한 메서드를 추가합니다:
    class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
     // 이미지 피커 컨트롤러 초기화
     let imagePickerController = UIImagePickerController()
        
     override func viewDidLoad() {
         super.viewDidLoad()
            
         // 이미지 피커 컨트롤러에서 이미지 선택 완료 시 호출될 메서드 설정
         imagePickerController.delegate = self
            
         // 이미지 피커 컨트롤러의 소스를 사진 앨범으로 설정
         imagePickerController.sourceType = .photoLibrary
     }
        
     // 이미지 선택 완료 시 호출될 메서드
     func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
         // 선택된 이미지 가져오기
         let selectedImage = info[.originalImage] as! UIImage
            
         // FirebaseUI를 사용하여 클라우드 저장소에 이미지 업로드하기
         let storageRef = Storage.storage().reference()
         let imageRef = storageRef.child("images/image.jpg")
            
         guard let imageData = selectedImage.jpegData(compressionQuality: 0.8) else { return }
            
         let uploadTask = imageRef.putData(imageData, metadata: nil) { (metadata, error) in
             if let error = error {
                 // 업로드 중 오류 발생
                 print("Error uploading image: \(error.localizedDescription)")
             } else {
                 // 업로드 성공
                 print("Image uploaded successfully!")
             }
         }
            
         // 업로드 진행률 모니터링
         uploadTask.observe(.progress) { snapshot in
             guard let progress = snapshot.progress else { return }
                
             // 업로드 진행률 출력
             let percentComplete = Double(progress.completedUnitCount) / Double(progress.totalUnitCount) * 100
             print("Upload progress: \(percentComplete)%")
         }
            
         dismiss(animated: true, completion: nil)
     }
    }
    
  5. 위의 코드에서 image.jpg로 이미지를 업로드하는 부분을 원하는 파일 경로 및 파일 이름으로 수정하여 사용할 수 있습니다.

  6. 앱을 실행하고 이미지를 선택하면 FirebaseUI를 사용하여 이미지가 클라우드 저장소에 업로드됩니다.

FirebaseUI를 사용하여 클라우드 저장소를 구현하는 방법에 대해 알아보았습니다. FirebaseUI를 사용하면 간단하게 Firebase 기능을 앱에 통합할 수 있으므로, 앱 개발 시 FirebaseUI를 활용해 보시기 바랍니다.

참고 자료