RMStoreというiPhoneのアプリ内課金を楽にしてくれるライブラリを使ってみました。
インストール
インストールはcocoapodsを使います。
pod 'RMStore'
使い方
商品情報は以下のように取得します。
引数にproductIdを渡せばSKProductの配列が返ってきます。
let productIds = ["com.example.item"] RMStore.default().requestProducts(productIds, success: { products, invalidIdentifiers in self?.products = products as? [SKProduct] }, failure: { error in })
購入処理はaddPaymentメソッドを使います。
レシートチェックなどは引数で渡されるSKPaymentTransactionクラスのインスタンスを使います。
RMStore.default().addPayment("com.example.item", success: { transaction in if transaction?.transactionState != .purchased { return } }, failure: { transaction, error in })
リストア処理は以下の通りです。
購入履歴が引数として渡されるので、それを使って購入したかの判定をします。
RMStore.default().restoreTransactions(onSuccess: { [weak self] transactions in if let transactions = (transactions as? [SKPaymentTransaction]), transactions.map({ $0.payment.productIdentifier }).contains("com.example.com") { print("商品情報がありました") } else { print("商品情報が見つかりませんでした") } }, failure: { error in })
今回は試していないのですが、コンテンツダウンロードも対応しているようです。