[swift] Swift FirebaseUI를 사용하여 데이터베이스 읽기 및 쓰기 구현하기

Firebase는 실시간 데이터베이스 서비스를 제공하는 Google의 클라우드 기반 플랫폼입니다. FirebaseUI는 Firebase를 사용하여 앱 개발을 더욱 쉽게 만들어주는 라이브러리입니다. 이번 글에서는 FirebaseUI를 사용하여 Swift 앱에서 데이터베이스 읽기 및 쓰기를 구현하는 방법을 알아보겠습니다.

FirebaseUI 설치하기

FirebaseUI를 사용하기 위해서는 먼저 CocoaPods를 설치해야 합니다. CocoaPods는 Swift 앱의 의존성 관리를 용이하게 해주는 도구입니다. 다음 명령어를 사용하여 CocoaPods를 설치합니다.

sudo gem install cocoapods

설치가 완료되었다면, 프로젝트 폴더로 이동한 후 다음 명령어를 실행하여 프로젝트에 FirebaseUI를 추가합니다.

pod 'FirebaseUI'

Podfile이 있는 위치에서 pod install 명령어를 실행하여 FirebaseUI를 설치합니다.

FirebaseUI를 사용하여 데이터베이스 읽기

FirebaseUI를 사용하여 데이터베이스에서 데이터를 읽기 위해서는 다음과 같은 단계를 따릅니다.

  1. Firebase 프로젝트 만들기 및 구성 : Firebase 콘솔에서 새로운 프로젝트를 만들고, 앱을 설정하여 구성합니다. 구성이 완료되면 Firebase SDK를 앱에 추가합니다.

  2. FirebaseUI 인증 활성화 : FirebaseUI를 사용하기 위해서는 사용자 인증을 설정해야 합니다.

  3. FirebaseUI 데이터베이스 연결 : 데이터베이스를 읽기 위해 FirebaseUI를 사용합니다. 다음은 예시 코드입니다.

import Firebase
import FirebaseAuthUI
import FirebaseUI

class ViewController: UIViewController, FUIAuthDelegate {

    // FirebaseUI 데이터베이스 연결
    var db: Firestore!
    var authUI: FUIAuth!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Firebase 프로젝트 초기화
        FirebaseApp.configure()
        
        // Firestore 데이터베이스 초기화
        db = Firestore.firestore()
        
        // FirebaseUI 인증 초기화
        let authUI = FUIAuth.defaultAuthUI()
        authUI?.delegate = self
    }
    
    // 사용자 인증 상태 변경 감지
    func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?) {
        if let user = user {
            // 사용자가 로그인한 경우 데이터베이스에서 데이터 읽기
            db.collection("users").whereField("uid", isEqualTo: user.uid).getDocuments { (snapshot, error) in
                if let error = error {
                    print("Error getting documents: \(error)")
                } else {
                    for document in snapshot!.documents {
                        print("\(document.documentID) => \(document.data())")
                    }
                }
            }
        }
    }
}

위의 코드에서 authUI 변수를 이용하여 FirebaseUI 인증을 초기화한 후, 로그인된 사용자의 UID를 사용하여 Firestore 데이터베이스에서 해당 사용자의 문서를 가져옵니다.

FirebaseUI를 사용하여 데이터베이스 쓰기

FirebaseUI를 사용하여 데이터베이스에 데이터를 쓰기 위해서는 다음 단계를 따릅니다.

  1. FirebaseUI 데이터베이스 연결 : 데이터베이스를 쓰기 위해 FirebaseUI를 사용합니다. 위에서 작성한 코드에서 이미 FirebaseUI 데이터베이스 연결 섹션을 구현한 상태입니다.

  2. 데이터 쓰기 : FirebaseUI를 사용하여 데이터베이스에 데이터를 쓰려면 FirebaseUI 데이터베이스 연결 섹션에서 작성한 코드를 참조하여 사용자 인증 여부를 확인한 후 데이터를 씁니다. 다음은 예시 코드입니다.

// 데이터 쓰기 예시
func writeToDatabase() {
    if let user = Auth.auth().currentUser {
        db.collection("users").document().setData([
            "uid": user.uid,
            "name": "John Doe",
            "email": user.email
        ]) { error in
            if let error = error {
                print("Error writing document: \(error)")
            } else {
                print("Document successfully written!")
            }
        }
    }
}

위의 코드에서는 현재 로그인한 사용자가 있을 경우 setData 메소드를 사용하여 데이터를 씁니다. 데이터는 users 컬렉션에 새 문서로 저장되며, 사용자의 UID, 이름과 이메일 정보를 포함합니다.

이제 FirebaseUI를 사용하여 Swift 앱에서 Firebase 데이터베이스의 읽기 및 쓰기를 구현할 수 있습니다. FirebaseUI를 사용하면 인증 및 데이터베이스 조작을 간단하게 처리할 수 있으며, Firebase의 다른 기능들과 함께 앱 개발을 더욱 용이하게 할 수 있습니다.

참고 자료