StoreKit覚書(その1)

StoreKitを使った実装をしようとして調査したメモ

ちなみに、調査したのは、ここにあるドキュメント(とサンプルコード)

SotreKitを使って以下ができるようになる

  • アプリ内で、自動継続アイテムが購入できること
  • アプリ内で、購入確認ができ、復元できること
  • コードから、購入されているか確認でき、機能の有効無効を制御できること
ちなみに
自分でサーバーを立てることは、予定していなくて、購入することで、広告が非表示になり、おまけ機能が使えるようになることが、アプリ視点でのゴールです。

対象となるProduct

自動継続アイテムは、”Auto-renewable subscriptions”と呼ばれるProductです。

重要なクラスの1つは、SKPaymentTransaction

SKPaymentTransactionというクラスで、支払いについて管理する。このSKPaymentTransactionを処理キュー(SKPaymentQueue)に追加していくことで、支払い処理がされる。
つまり、大事なクラス

重要なクラスの別の1つは、SKPaymentQueue

上のSKPaymentTransactionが追加されて、このQueueで処理される。実際には、AppStoreと通信して処理される。
使う時には、新しいインスタンスを作るのではなく、メソッドの”default”を使って、インスタンスを取得して、そのQueueを使うことになる。なので、例えばオブザーバーを追加するコードは次のようになる。

コード

ちなみに、Simulatorでは、このクラスは、使えないらしいので、テストするときは、実機でないとテストできないらしい。

必要となるオブザーバー

大事なクラスであるSKPaymentTransactionの処理についてオブザーブするためのProtocolとして、SKPaymentTransactionObserverが用意されている。このオブザーバを、アプリ起動直後から作ることが推奨されている。もちろん、アプリ終了時には、解除することが必要。ちなみに、SKPaymentQueueに対してオブザーブします。

Transactionが正しく処理されると、Receipt(レシート)とIdentifier(ID)を入手できる。このReceiptとIdentifierを使うことで、支払いを記憶しておくことができる。
アプリがバックグランドに移動されている時も、このオブザーバーは、呼ばれるかもしれないので、アプリが終了するまで、きちんと存在することが必要。
外部(例えば、同一AppleIDの別デバイスから)から購入処理が行われることも想定されるので、オブザーバーは、アプリ起動時に追加することが”強く”推奨されている。

注意
自分で作るオブザーバーも共通のインスタンスをアプリで共有することがおすすめされてます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です