`iOS In-App Purchase` を実装するための参考リンク・メモ / `SKRequest, SKProductsRequest`のメソッドやプロパティのメモ

参考にしたリンク

StoreKit.framework

StoreKit.framework を使用するのでプロジェクトに追加しておく。

StoreKit のヘッダーを見ると以下のようなクラスが含まれていることが分かる

#import <StoreKit/SKError.h> // エラーの種類を表す列挙型の定義
#import <StoreKit/SKPayment.h>
#import <StoreKit/SKPaymentQueue.h>
#import <StoreKit/SKPaymentTransaction.h>
#import <StoreKit/SKProduct.h>
#import <StoreKit/SKProductsRequest.h>
#import <StoreKit/SKRequest.h>
#import <StoreKit/StoreKitDefines.h> // 中身はプリプロセッサマクロだけ、特に気にすることはないかと。。

アプリ内課金を実装するために継承すべきプロトコル

SKProductsRequestDelegate, SKPaymentTransactionObserver のプロトコルが必要。

@interface InAppPurchaseHelper : NSObject<SKProductsRequestDelegate, SKPaymentTransactionObserver>

SKPaymentTransactionObserver は開始したトランザクションを受け取り処理を実行するためのメソッドを持つ。

SKRequest

SKProductsRequest の親クラスであり抽象クラスである。リクエストを開始する -start や 中止する -cancel メソッドを持つ。AppStore へリクエストができるオブジェクト。

SKRequestDelegate

  • - (void)requestDidFinish:(SKRequest *)request __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0) | リクエスト完了時に呼ばれる
  • - (void)request:(SKRequest *)request didFailWithError:(NSError *)error __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0) | リクエスト失敗時に呼ばれる

SKProductsRequest

SKRequest のサブクラス。プロダクト情報のリクエストを実行できる。プロダクトはAppStoreで販売するもの全てを指す。リクエストした結果は SKRequestDelegate#productsRequest:didReceiveResponse:

SKProductsResponse として渡される。

  • - (id)initWithProductIdentifiers:(NSSet *)productIdentifiers __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0) | アイテムIDを指定して使用するイニシャライザ
  • @property(nonatomic, assign) id delegate | デリゲートのプロパティ。assign

SKProductsRequestDelegate

SKRequestDelegate を継承したデリゲート用のプロトコル

  • - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0) : SKProductsRequest#start startメソッドによるアイテムの取得完了時に呼ばれる。
Share
関連記事