[swift] Swift FirebaseUI를 사용하여 카메라 및 갤러리 접근하기

FirebaseUI는 Firebase와 Swift 애플리케이션을 구성하기 위한 편리한 도구입니다. 이를 사용하면 Firebase 관련 기능을 쉽게 구현할 수 있습니다. 이번 블로그에서는 FirebaseUI를 사용하여 Swift 애플리케이션에서 카메라와 갤러리에 접근하는 방법을 알아보겠습니다.

FirebaseUI 설치하기

FirebaseUI를 사용하려면 먼저 프로젝트에 FirebaseUI를 설치해야 합니다. 이를 위해서는 FirebaseUI를 Podfile에 추가하고 Terminal에서 pod install 명령어를 실행하면 됩니다.

pod 'FirebaseUI'

카메라 및 갤러리 접근하기

FirebaseUI를 사용하여 카메라와 갤러리에 접근하기 위해서는 FUIAuthPickerViewController를 사용해야 합니다. 이 컨트롤러는 FirebaseUI에서 제공하는 사용자 인증 화면을 보여주며, 기본적으로 이 화면에는 로그인 및 회원 가입 옵션이 포함되어 있습니다. 그러나 이를 커스터마이징하여 카메라와 갤러리 접근 버튼을 추가할 수도 있습니다.

아래의 코드는 Swift에서 FUIAuthPickerViewController를 사용하여 카메라와 갤러리에 접근하는 예제입니다.

import UIKit
import Firebase
import FirebaseUI

class ViewController: UIViewController, FUIAuthDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Firebase 초기화
        FirebaseApp.configure()
        
        // FirebaseUI 설정
        let authUI = FUIAuth.defaultAuthUI()
        authUI?.delegate = self
        
        // 로그인 화면 설정
        let authViewController = authUI!.authViewController()
        authViewController.providers = [FUIEmailAuth(), FUIGoogleAuth()]
        
        // 카메라 및 갤러리 접근 버튼 추가
        let cameraButton = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 50))
        cameraButton.setTitle("카메라로 사진 찍기", for: .normal)
        cameraButton.addTarget(self, action: #selector(openCamera), for: .touchUpInside)
        self.view.addSubview(cameraButton)
        
        let galleryButton = UIButton(frame: CGRect(x: 100, y: 200, width: 200, height: 50))
        galleryButton.setTitle("갤러리에서 사진 선택", for: .normal)
        galleryButton.addTarget(self, action: #selector(openGallery), for: .touchUpInside)
        self.view.addSubview(galleryButton)
        
        // 로그인 화면 표시
        present(authViewController, animated: true, completion: nil)
    }
    
    // 카메라 열기
    @objc func openCamera() {
        let picker = UIImagePickerController()
        picker.sourceType = .camera
        picker.delegate = self
        present(picker, animated: true, completion: nil)
    }
    
    // 갤러리 열기
    @objc func openGallery() {
        let picker = UIImagePickerController()
        picker.sourceType = .photoLibrary
        picker.delegate = self
        present(picker, animated: true, completion: nil)
    }
    
    // 이미지 선택 완료 시 호출되는 메소드
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let selectedImage = info[UIImagePickerController.InfoKey.originalImage] as! UIImage
        dismiss(animated: true, completion: nil)
        
        // 선택한 이미지를 Firebase에 업로드하는 코드 작성
    }

}

위의 코드는 FirebaseUI를 사용하여 카메라와 갤러리에 접근하는 기능을 구현한 것입니다. 코드를 실행하면 사용자는 로그인 화면이 표시되고, 로그인 후에는 화면에 카메라와 갤러리에 접근할 수 있는 버튼이 표시됩니다. 사용자가 버튼을 클릭하면 카메라 또는 갤러리가 열리며, 선택한 이미지를 Firebase에 업로드할 수 있습니다.

이렇게 FirebaseUI를 사용하여 Swift 애플리케이션에서 카메라와 갤러리에 접근하는 방법을 알아보았습니다. FirebaseUI를 사용하면 더욱 간편하게 Firebase 관련 기능을 구현할 수 있으므로, Firebase를 사용하는 개발자에게 유용한 도구입니다.

참고 문서: FirebaseUI for iOS