[swift] Swift에서 Firebase의 인앱 결제 기능 구현하기

Firebase는 개발자들이 앱을 더욱 풍부하고 유용하게 만들기 위한 다양한 기능을 제공하는 플랫폼입니다. 그 중 하나인 Firebase의 인앱 결제 기능을 Swift에서 어떻게 구현할 수 있는지 알아보겠습니다.

1. Firebase 설정하기

Firebase의 인앱 결제 기능을 사용하기 위해 프로젝트에 Firebase를 연동해야 합니다. Firebase 콘솔에서 프로젝트를 생성하고, iOS 앱을 추가하십시오. Firebase SDK를 다운로드하고, 프로젝트에 추가해야 합니다. Firebase SDK를 추가하는 방법에 대한 자세한 내용은 Firebase 문서를 참조하십시오.

2. 인앱 결제를 위한 앱 내 구조 설정하기

Firebase의 인앱 결제 기능을 사용하기 위해 앱 내에 몇 가지 구조를 설정해야 합니다.

2.1. 상품 정보 생성하기

상품 정보는 인앱 결제를 통해 구매할 수 있는 제품에 대한 정보를 담고 있습니다. Firebase 콘솔에서 ‘인앱 결제’ 섹션으로 이동하여 상품을 생성할 수 있습니다. 상품 ID, 상품명, 가격, 설명 등을 설정하십시오.

2.2. 인앱 결제 처리를 위한 코드 작성하기

Swift 코드에서 인앱 결제를 처리하기 위해 StoreKit 프레임워크를 사용합니다. StoreKit은 앱 내 구매를 처리하고 인앱 결제 관련 이벤트를 제공합니다.

import StoreKit

class InAppPurchaseManager: NSObject, SKProductsRequestDelegate, SKPaymentTransactionObserver {

    static let shared = InAppPurchaseManager()
    
    // 상품 정보를 요청하는 메서드
    func requestProductInfo() {
        let productIdentifiers = Set(["your_product_id"])
        let request = SKProductsRequest(productIdentifiers: productIdentifiers)
        request.delegate = self
        request.start()
    }
    
    // 상품 정보 요청 결과를 받는 메서드
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        let products = response.products
        for product in products {
            print("Product ID: \(product.productIdentifier)")
            print("Product Name: \(product.localizedTitle)")
            print("Product Price: \(product.price)")
        }
    }
    
    // 인앱 결제 트랜잭션을 처리하는 메서드
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction in transactions {
            switch transaction.transactionState {
            case .purchased:
                // 결제 완료 처리
                completeTransaction(transaction)
            case .restored:
                // 복원 완료 처리
                restoreTransaction(transaction)
            case .failed:
                // 결제 실패 처리
                failTransaction(transaction)
            case .deferred:
                // 결제 보류 처리
                break
            case .purchasing:
                // 결제 중 처리
                break
            @unknown default:
                break
            }
        }
    }
    
    // 결제 완료 처리
    func completeTransaction(_ transaction: SKPaymentTransaction) {
        // 결제 완료 처리 로직을 구현합니다.
    }
    
    // 복원 완료 처리
    func restoreTransaction(_ transaction: SKPaymentTransaction) {
        // 복원 완료 처리 로직을 구현합니다.
    }
    
    // 결제 실패 처리
    func failTransaction(_ transaction: SKPaymentTransaction) {
        // 결제 실패 처리 로직을 구현합니다.
    }
    
}

2.3. 인앱 결제 이벤트 관리를 위한 코드 작성하기

StoreKit을 사용하여 인앱 결제 이벤트를 처리하기 위해 SKPaymentQueue를 설정하고, 인앱 결제 처리 관련 이벤트를 옵저버로 등록해야 합니다.

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        // 인앱 결제 이벤트 관련 옵저버 등록
        SKPaymentQueue.default().add(InAppPurchaseManager.shared)
        
        return true
    }
    
}

3. 상품 정보 요청 및 구매 처리하기

위에서 작성한 InAppPurchaseManager 클래스를 사용하여 상품 정보를 요청하고, 구매 처리를 할 수 있습니다.

let inAppPurchaseManager = InAppPurchaseManager.shared

// 상품 정보 요청
inAppPurchaseManager.requestProductInfo()

// 상품 구매 처리
func purchaseProduct() {
    if SKPaymentQueue.canMakePayments() {
        let payment = SKPayment(product: yourProduct)
        SKPaymentQueue.default().add(payment)
    } else {
        // 인앱 결제가 비활성화되어 있는 경우 처리할 코드 작성
    }
}

이렇게 Swift에서 Firebase의 인앱 결제 기능을 구현할 수 있습니다. Firebase의 인앱 결제 기능은 앱 내 구매를 처리하기 위한 다양한 기능을 제공하므로, 개발자들에게 편리함을 제공하는 역할을 합니다.

더 자세한 내용은 Firebase 문서를 참조하시기 바랍니다.