[swift] Swift와 Firebase의 인앱 결제 서비스 연동 방법
인앱 결제 서비스는 앱 내에서 제품이나 서비스를 판매하고 결제를 받을 수 있는 기능입니다. Swift와 Firebase를 사용하여 인앱 결제 서비스를 연동하는 방법에 대해 알아보겠습니다.
Firebase 설정
- Firebase 콘솔에 로그인하고 프로젝트를 만듭니다.
- ‘월드 와이드 웹’을 선택하고, 생성된 프로젝트에 Firebase를 추가합니다.
- ‘In-App Purchases’ 탭에서 ‘구축’을 선택하고 ‘플레이스홀더용 App Store Product’을 만듭니다.
- 앱 내에서 판매할 제품의 정보를 입력하고 저장합니다.
Swift 프로젝트 설정
- Firebase SDK를 사용하기 위해
Podfile
에 Firebase 및 Firebase/InAppMessaging 라이브러리를 추가합니다.
pod 'Firebase/Core'
pod 'Firebase/InAppMessaging'
-
Terminal에서
pod install
명령어를 실행하여 라이브러리를 설치합니다. -
Xcode에서 프로젝트를 열고
AppDelegate.swift
파일을 엽니다. -
import Firebase
문을 추가하고,didFinishLaunchingWithOptions
메서드에 Firebase 설정 코드를 추가합니다.
import Firebase
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
return true
}
ViewController.swift
파일을 열고, 인앱 결제 서비스를 초기화하는 코드를 작성합니다.
import Firebase
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 인앱 결제 서비스 초기화
InAppPurchase.shared.initialize()
}
}
InAppPurchase.swift
파일을 생성하고, 인앱 결제 관련 코드를 작성합니다.
import Firebase
class InAppPurchase {
static let shared = InAppPurchase()
func initialize() {
// Firebase 인앱 결제 서비스 초기화
IAPHandler.shared.initialize()
// 구독 관리자 설정
SubscriptionManager.shared.initialize()
}
}
- 인앱 결제 관련 코드를 작성하기 위해
IAPHandler.swift
파일을 생성합니다.
import StoreKit
class IAPHandler: NSObject {
static let shared = IAPHandler()
private override init() {}
func initialize() {
// 인앱 결제 트랜잭션 옵서버 등록
SKPaymentQueue.default().add(self)
}
// 인앱 결제 트랜잭션 시작
func startPayment(productId: String) {
guard SKPaymentQueue.canMakePayments() else {
print("인앱 결제가 비활성화되어 있습니다.")
return
}
let payment = SKPayment(product: product)
SKPaymentQueue.default().add(payment)
}
// 인앱 결제 트랜잭션 처리
func handlePaymentTransaction(transaction: SKPaymentTransaction) {
switch transaction.transactionState {
case .purchased:
// 결제 완료 처리
completePayment(transaction: transaction)
case .failed:
// 결제 실패 처리
failedPayment(transaction: transaction)
case .restored:
// 복원 처리
restorePayment(transaction: transaction)
default:
break
}
}
// 결제 완료 처리
func completePayment(transaction: SKPaymentTransaction) {
// 제품 제공 및 결제 완료 처리
}
// 결제 실패 처리
func failedPayment(transaction: SKPaymentTransaction) {
// 결제 실패 처리
}
// 복원 처리
func restorePayment(transaction: SKPaymentTransaction) {
// 복원 처리
}
}
// 인앱 결제 트랜잭션 옵서버 구현
extension IAPHandler: SKPaymentTransactionObserver {
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
handlePaymentTransaction(transaction: transaction)
}
}
}
- 인앱 구독 관리를 위해
SubscriptionManager.swift
파일을 생성합니다.
import Firebase
class SubscriptionManager {
static let shared = SubscriptionManager()
private override init() {}
func initialize() {
// 구독 관리자 설정
}
}
- 인앱 결제 서비스를 사용하기 위해 해당 제품을 구매하는 버튼을 추가하고, 버튼을 눌렀을 때
IAPHandler.shared.startPayment(productId: "productID")
메서드를 호출하도록 설정합니다.
이제 Swift와 Firebase를 사용하여 인앱 결제 서비스를 연동하는 방법을 알아보았습니다. Firebase 콘솔에서 제품 정보를 설정하고, Swift 프로젝트에서 필요한 설정과 코드를 추가하여 인앱 결제를 사용할 수 있습니다.