[swift] ChameleonFramework의 인앱 결제 기능

ChameleonFramework는 iOS 애플리케이션을 개발할 때 사용할 수 있는 유용한 패키지입니다. 이 패키지는 다양한 기능을 제공하는데, 그중 인앱 결제 기능을 구현하는 방법에 대해 알아보겠습니다.

1. ChameleonFramework 설치

먼저, ChameleonFramework를 설치해야 합니다. 이를 위해 CocoaPods를 사용하겠습니다. 프로젝트의 Podfile에 다음과 같이 추가합니다:

pod 'ChameleonFramework', '~> 2.1'

그리고 터미널에서 다음 명령어를 실행하여 패키지를 설치합니다:

pod install

2. 인앱 결제 기능 구현

2.1. 상품 등록

인앱 결제를 위해서는 먼저 애플리케이션 내에서 판매할 상품을 등록해야 합니다. 이를 위해 SKProduct 객체를 사용합니다. 다음 예제는 상품을 등록하는 코드입니다:

import StoreKit

let productIDs: Set<String> = ["com.yourapp.product1", "com.yourapp.product2"]

SKPaymentQueue.default().add(ChameleonStoreKitObserver.shared)
ChameleonStoreKitObserver.shared.registerProductIdentifiers(productIDs)

// 사용자가 상품 정보를 요청하는 버튼 액션 등에서 다음 코드 실행
ChameleonStoreKitObserver.shared.fetchProducts { (success, products) in
    if success {
        guard let products = products else { return }
        
        for product in products {
            print("Product ID: \(product.productIdentifier), Price: \(product.localizedPrice)")
        }
    } else {
        print("Failed to fetch products")
    }
}

2.2. 결제 처리

상품 등록 후에는 사용자가 결제를 진행할 수 있도록 처리해야 합니다. SKPayment 객체를 사용하여 결제 요청을 생성하고 SKPaymentQueue에 추가합니다. 다음 코드는 결제 처리 예제입니다:

let selectedProductID = "com.yourapp.product1"

if let product = ChameleonStoreKitObserver.shared.product(fromID: selectedProductID) {
    let payment = SKPayment(product: product)
    SKPaymentQueue.default().add(payment)
} else {
    print("Failed to find product with ID: \(selectedProductID)")
}

2.3. 결제 완료 처리

결제가 완료되면 SKPaymentTransactionObserver 프로토콜을 채택한 옵저버 객체를 통해 처리할 수 있습니다. 이를 위해 ChameleonStoreKitObserver 클래스를 사용합니다. 다음은 결제 완료 처리 예제입니다:

class MyStoreKitObserver: ChameleonStoreKitObserver {
    override func handlePurchased(transaction: SKPaymentTransaction) {
        guard let productID = transaction.payment.productIdentifier else { return }
        
        if productID == "com.yourapp.product1" {
            // 상품1에 대한 처리 로직
        } else if productID == "com.yourapp.product2" {
            // 상품2에 대한 처리 로직
        }
    }
}

위 코드에서 handlePurchased(transaction:) 메서드 내에서 결제 완료 후의 처리 로직을 구현하면 됩니다.

결론

ChameleonFramework를 사용하면 iOS 애플리케이션에 손쉽게 인앱 결제 기능을 구현할 수 있습니다. 위에서 소개한 방법을 참고하여 원하는 인앱 결제 기능을 적용해보세요!

참고 자료