[swift] Swift FirebaseUI를 사용하여 결제 내역 관리하기

Firebase는 개발자들에게 실시간 데이터베이스 및 인증, 저장소 등의 다양한 기능을 제공하는 플랫폼입니다. FirebaseUI는 Firebase의 기능을 iOS 앱에 쉽게 연동할 수 있는 라이브러리입니다. 이번 글에서는 Swift와 FirebaseUI를 사용하여 결제 내역을 관리하는 방법을 알아보겠습니다.

1. FirebaseUI 설치 및 설정

FirebaseUI를 사용하기 위해서는 먼저 Cocoapods를 통해 FirebaseUI를 설치해야 합니다. 아래의 명령어를 사용하여 Podfile을 생성합니다.

pod init

생성된 Podfile에 FirebaseUI를 추가합니다.

target 'YourApp' do
  use_frameworks!
  
  pod 'FirebaseUI'
end

설정이 완료되면 아래의 명령어를 통해 FirebaseUI를 설치합니다.

pod install

2. FirebaseUI를 사용하여 결제 내역 관리하기

FirebaseUI를 사용하여 결제 내역을 관리하려면 다음과 같은 단계를 따라야 합니다.

2.1. FirebaseUI 초기화

FirebaseUI를 사용하기 위해 앱을 초기화합니다. AppDelegate.swift 파일의 didFinishLaunchingWithOptions 메서드에 다음 코드를 추가합니다.

import Firebase
import FirebaseUI

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    FirebaseApp.configure()
    
    // FirebaseUI 초기화
    FUIAuth.defaultAuthUI()?.delegate = self
    
    return true
}

2.2. 사용자 인증

FirebaseUI는 손쉽게 사용자 인증을 처리할 수 있도록 도와줍니다. 로그인 화면을 표시하고 사용자 인증을 처리할 AuthUI 객체를 생성합니다.

import Firebase
import FirebaseUI

class ViewController: UIViewController, FUIAuthDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        if Auth.auth().currentUser == nil {
            // 로그인이 필요한 작업 수행
            let authUI = FUIAuth.defaultAuthUI()
            authUI?.delegate = self
            
            let providers: [FUIAuthProvider] = [
                FUIEmailAuth(),
                FUIGoogleAuth(),
                FUIFacebookAuth()
            ]
            authUI?.providers = providers
            
            let authViewController = authUI?.authViewController()
            present(authViewController!, animated: true, completion: nil)
        }
        else {
            // 로그인된 사용자가 있는 경우
            // 결제 내역 관리 화면으로 이동
        }
    }
    
    // 사용자 인증 완료 후 호출됩니다.
    func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?) {
        // 사용자 인증 완료 후 작업 수행
        if let error = error {
            // 로그인 에러 처리
        }
        else {
            // 로그인 성공
            // 결제 내역 관리 화면으로 이동
        }
    }
}

2.3. 결제 내역 관리

로그인이 완료된 후에는 사용자의 결제 내역을 관리할 수 있습니다. Firebase의 실시간 데이터베이스를 사용하여 결제 내역을 저장하고 조회할 수 있습니다.

import Firebase
import FirebaseDatabase

class PaymentManager {
    
    let databaseRef = Database.database().reference(withPath: "payments")
    
    func savePayment(payment: Payment) {
        let paymentRef = databaseRef.child(payment.key)
        paymentRef.setValue(payment.toDictionary())
    }
    
    func getAllPayments(completion: @escaping ([Payment]?, Error?) -> Void) {
        let paymentsRef = databaseRef.queryOrdered(byChild: "timestamp")
        paymentsRef.observeSingleEvent(of: .value) { (snapshot) in
            var payments: [Payment] = []
            
            for child in snapshot.children {
                if let snapshot = child as? DataSnapshot,
                   let paymentDict = snapshot.value as? [String: Any],
                   let payment = Payment(dictionary: paymentDict) {
                    payments.append(payment)
                }
            }
            
            completion(payments, nil)
        }
    }
}

위의 예시 코드에서 Payment는 결제 내역을 나타내는 모델 객체입니다. keytimestamp를 포함한 다른 속성들이 필요한 경우에는 해당 속성을 추가하면 됩니다.


FirebaseUI를 사용하여 Swift 앱에서 결제 내역을 관리하는 방법을 알아보았습니다. Firebase를 통해 손쉽게 사용자 인증과 데이터 관리 기능을 구현할 수 있기 때문에, 개발자들은 더욱 편리하게 서비스를 제공할 수 있습니다. FirebaseUI와 Swift를 함께 사용하여 앱 개발을 더욱 빠르게 진행해보세요!

참고 자료