[swift] Swift FirebaseUI를 사용하여 음식 주문 및 배달 시스템 구현하기

Firebase는 실시간 데이터베이스와 인증, 스토리지 등 다양한 기능을 제공하는 백엔드 서비스입니다. FirebaseUI는 Firebase와 통합되는 UI 라이브러리로, 앱에 로그인, 데이터베이스 관리, 스토리지 처리 등을 간편하게 구현할 수 있습니다. 이번 포스트에서는 Swift와 FirebaseUI를 사용하여 음식 주문 및 배달 시스템을 구현하는 방법에 대해 알아보겠습니다.

준비 사항

  1. Xcode 설치: Swift 개발을 위해 Xcode를 설치해야 합니다.
  2. Firebase 프로젝트 생성: Firebase 콘솔에서 새로운 프로젝트를 생성해야 합니다.
  3. CocoaPods 설치: FirebaseUI를 사용하기 위해 CocoaPods를 설치해야 합니다.

프로젝트 설정

  1. Xcode에서 새로운 프로젝트를 만듭니다.
  2. 프로젝트 디렉토리로 이동하여 터미널을 엽니다.
  3. pod init 명령어를 실행하여 Podfile을 생성합니다.
  4. Podfile을 열고 pod 'FirebaseUI/Auth'pod 'FirebaseUI/Database'를 추가합니다.

    target 'YourProjectName' do
      # 앞선 명령어들...
      pod 'FirebaseUI/Auth'
      pod 'FirebaseUI/Database'
    end
    
  5. 터미널에서 pod install을 실행하여 FirebaseUI를 설치합니다.

Firebase 설정

  1. Firebase 콘솔에서 생성한 프로젝트를 선택합니다.
  2. “프로젝트 설정”으로 이동하여 Firebase 프로젝트의 구성 파일(GoogleService-Info.plist)을 다운로드합니다.
  3. Xcode 프로젝트에 생성한 파일을 추가합니다.

    Firebase 파일 추가

  4. Firebase 콘솔에서 “Authentication”을 선택하고 “로그인 방법”으로 이동하여 로그인에 사용할 프로바이더를 설정합니다.
  5. Firebase 콘솔에서 “Database”를 선택하고 “실시간 데이터베이스”로 이동하여 데이터베이스를 생성하고 보안 규칙을 설정합니다.

코드 구현

  1. Xcode에서 AppDelegate.swift 파일을 열고 import FirebaseUI를 추가합니다.
  2. FirebaseApp.configure()application(_:didFinishLaunchingWithOptions:) 함수 내부에 추가합니다.

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        // ...
        return true
    }
    
  3. 음식 주문 및 배달 시스템의 앞서 설정한 Firebase 데이터베이스 구조를 생성합니다.
  4. ViewController.swift 파일을 열고 import FirebaseUIimport FirebaseDatabase를 추가합니다.
  5. class ViewController: UIViewController 위에 다음 코드를 추가하여 FirebaseUI를 초기화합니다.

    var authUI: FUIAuth?
    var databaseRef: DatabaseReference!
       
    override func viewDidLoad() {
        super.viewDidLoad()
        // FirebaseUI 초기화
        authUI = FUIAuth.defaultAuthUI()
        authUI?.delegate = self
        let providers: [FUIAuthProvider] = [
            FUIGoogleAuth(),
            // 필요한 다른 로그인 프로바이더 추가
        ]
        authUI?.providers = providers
           
        // Firebase 데이터베이스 초기화
        databaseRef = Database.database().reference()
    }
    
  6. 다음과 같은 코드를 사용하여 로그인 화면으로 전환할 수 있습니다.

    @IBAction func signInButtonTapped(_ sender: Any) {
        let authViewController = authUI!.authViewController()
        present(authViewController, animated: true, completion: nil)
    }
    
  7. 로그인 후 데이터베이스에 데이터를 저장하고 읽어오는 예제 코드는 다음과 같습니다.

    // 데이터 저장
    databaseRef.child("orders").childByAutoId().setValue(["food": "Pizza", "status": "Pending"])
       
    // 데이터 읽기
    databaseRef.child("orders").observe(.value) { (snapshot) in
        // 데이터 처리
    }
    

결론

FirebaseUI는 Swift 앱에서 Firebase와 심플하게 통합할 수 있는 강력한 도구입니다. 이번 포스트에서는 FirebaseUI를 사용하여 음식 주문 및 배달 시스템을 구현하는 방법을 알아보았습니다. FirebaseUI를 사용하면 앱에 다양한 인증 방법과 실시간 데이터베이스를 손쉽게 구현할 수 있습니다. 추가로 FirebaseUI 문서와 예제 코드를 참고하면 더 다양한 기능을 구현할 수 있습니다.

참고 자료