しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

InAppPurchase用ライブラリ、RMStoreを使ってみる

RMStoreというiPhoneのアプリ内課金を楽にしてくれるライブラリを使ってみました。

github.com

インストール

インストールは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
})

今回は試していないのですが、コンテンツダウンロードも対応しているようです。