StoreKitを使った実装をしようとして調査したメモ
ちなみに、調査したのは、ここにあるドキュメント(とサンプルコード)
Sponsor Link
目次
SotreKitを使って以下ができるようになる
- アプリ内で、自動継続アイテムが購入できること
- アプリ内で、購入確認ができ、復元できること
- コードから、購入されているか確認でき、機能の有効無効を制御できること
対象となるProduct
自動継続アイテムは、”Auto-renewable subscriptions”と呼ばれるProductです。
重要なクラスの1つは、SKPaymentTransaction
SKPaymentTransactionというクラスで、支払いについて管理する。このSKPaymentTransactionを処理キュー(SKPaymentQueue)に追加していくことで、支払い処理がされる。
つまり、大事なクラス
重要なクラスの別の1つは、SKPaymentQueue
上のSKPaymentTransactionが追加されて、このQueueで処理される。実際には、AppStoreと通信して処理される。
使う時には、新しいインスタンスを作るのではなく、メソッドの”default”を使って、インスタンスを取得して、そのQueueを使うことになる。なので、例えばオブザーバーを追加するコードは次のようになる。
1 2 3 |
SKPaymentQueue.default().add(myObserver) |
必要となるオブザーバー
大事なクラスであるSKPaymentTransactionの処理についてオブザーブするためのProtocolとして、SKPaymentTransactionObserverが用意されている。このオブザーバを、アプリ起動直後から作ることが推奨されている。もちろん、アプリ終了時には、解除することが必要。ちなみに、SKPaymentQueueに対してオブザーブします。
Transactionが正しく処理されると、Receipt(レシート)とIdentifier(ID)を入手できる。このReceiptとIdentifierを使うことで、支払いを記憶しておくことができる。
アプリがバックグランドに移動されている時も、このオブザーバーは、呼ばれるかもしれないので、アプリが終了するまで、きちんと存在することが必要。
外部(例えば、同一AppleIDの別デバイスから)から購入処理が行われることも想定されるので、オブザーバーは、アプリ起動時に追加することが”強く”推奨されている。
Sponsor Link