UNICORN - iOS
MPurchaseAgent.h
1 //
2 // MPurchaseAgent.h
3 // Version:1.0
4 //
5 // Created by saimushi on 2014/11/27.
6 // Copyright (c) 2014 saimushi. All rights reserved.
7 //
50 /* ローカルレシートチェック*/
51 #import "MVerifyStoreReceipt.h"
52 
53 /* ストアアイテム参照ライブラリを利用 */
54 #import "MProductAgent.h"
55 
56 
57 // ローカライズ用のキー定義
58 #define PURCHASE_ERROR_KEY @"購入に失敗しました。再度手続きしてください。"
59 #define STORE_SESSION_ERROR_KEY @"AppStoreとの接続に失敗しました。再度手続きしてください。"
60 #define RESTORE_ERROR_KEY @"復元処理に失敗しました。再度お手続きをしてください。"
61 #define RESTORE_CHANCEL_KEY @"復元処理がキャンセルされました。再度お手続きをしてください。"
62 #define RESTORE_COMPLETE_KEY @"購入を復元しました。\r\n他の全ての復元可能なアイテムを復元しました。"
63 #define RESTORE_COMPLETE_ALL_KEY @"全ての復元可能なアイテムを復元しました。"
64 #define RESTORE_COMPLETE_ERROR_KEY @"復元可能なアイテムがありませんでした。"
65 #define PURCHASE_LIMITED_ERROR_KEY @"アプリ内でのアイテム購入が制限されています。"
66 #define PURCHASE_NOW_WAIT_KEY @"購入手続き中..."
67 #define PURCHASE_WAIT_KEY @"APP STOREに確認中..."
68 #define PURCHASE_FINISH_WAIT_KEY @"購入履歴チェック中..."
69 #define PURCHASE_CHANCEL_KEY @"購入処理がキャンセルされました。再度お手続きをしてください。"
70 
71 @class SKPaymentTransaction;
72 @protocol MPurchaseDelegate;
73 typedef void (*send_type)(void*, SEL, void*, void*, void*, void*, void*);
74 typedef void (^MPurchaseReturnDelegateBlock)();
75 typedef void (^MPurchaseDelegateBlock)(SKPaymentTransaction *transaction, NSString *verifyStatus, NSString *base64Receipt, BOOL expiered, NSString *expierDateGMTStr, MPurchaseReturnDelegateBlock finishTransaction);
76 
77 
78 @interface MPurchaseAgent : NSObject
79 
80 // 強参照
81 @property (nonatomic, unsafe_unretained) NSObject<MPurchaseDelegate>*delegate;
82 
83 /* インスタンス化メソッド(ローカルレシートチェックを行います) */
84 + (id)sharedInstance;
85 /* リモート(Appleサーバ)レシートチェックを利用する場合のインスタンス化メソッド */
86 + (id)sharedInstance:(NSString *)argSharedSecret;
87 
88 /* スタティックメソッド群:外からの使用も可 */
89 /* オブザーバーが未スタートだったらスタートさせる(事前登録用) */
90 + (void)startPaymentTransactionObserver;
91 /* 指定トランザクションを終了させられるインターフェース用(トランザクションクローズをコントロールしたい人向け) */
92 + (void)finishTransaction:(SKPaymentTransaction *)argTransaction;
93 /* 外部から全てのトランザクションアラートを非表示に出来るインターフェースを用意 */
94 + (void)hideAlerts;
95 
96 /* レシートチェック(SharedSecretが指定されている場合はリモートチェック or ローカル 自動判別) */
97 - (void)verifyReceipt:(SKPaymentTransaction *)argTransaction :(BOOL)argRestored :(void (^)(NSDictionary *receiptDic))argCompletion;
98 /* リモートレシートチェック */
99 - (void)verifyReceiptForRemote:(SKPaymentTransaction *)argTransaction :(BOOL)argRestored :(void (^)(NSDictionary *receiptDic))argCompletion;
100 /* ローカルレシートチェック */
101 - (void)verifyReceiptForLocal:(SKPaymentTransaction *)argTransaction :(BOOL)argRestored :(void (^)(NSDictionary *receiptDic))argCompletion;
102 
103 /* 購入処理実行(SKProduct) */
104 - (void)purchaseWithProduct:(SKProduct *)argProduct :(MProductType)argProductType :(MPurchaseDelegateBlock)argPurchaseComplation :(MPurchaseDelegateBlock)argRestoreComplation;
105 /* 購入処理実行(プロダクトID文字列) */
106 - (void)purchaseWithProductID:(NSString *)argProductID :(MProductType)argProductType :(MPurchaseDelegateBlock)argPurchaseComplation :(MPurchaseDelegateBlock)argRestoreComplation;
107 /* 事前にentryされたプロダクトの購入処理実行(SKProduct) */
108 - (void)purchaseWithProduct:(SKProduct *)argProduct;
109 /* 事前にentryされたプロダクトIDの購入処理実行(プロダクトID文字列) */
110 - (void)purchaseWithProductID:(NSString *)argProductID;
111 /* リストア処理実行 */
112 - (void)restore;
113 
114 /*
115  ※AppDelegateにて、コンプリートブロックと、エラーブロックを、プロダクトID分それぞれ先に登録しておく為のメソッドを提供します。
116  この機能は、アップルの購入トランザクションの中断等に置いて、アプリケーションの復帰時に、中断された購入処理を再開し、完了する事に利用出来ます。
117  */
118 /* 購入の登録(SKProduct) */
119 - (void)entryWithProduct:(SKProduct *)argProduct :(MProductType)argProductType :(MPurchaseDelegateBlock)argPurchaseComplation :(MPurchaseDelegateBlock)argRestoreComplation;
120 /* 購入の登録(プロダクトID文字列) */
121 - (void)entryWithProductID:(NSString *)argProductID :(MProductType)argProductType :(MPurchaseDelegateBlock)argPurchaseComplation :(MPurchaseDelegateBlock)argRestoreComplation;
122 
123 @end
124 
125 
126 @protocol MPurchaseDelegate <NSObject>
127 @optional
128 
129 /* SKRequestのデレゲートをチェーン */
130 /* プロダクトID問い合わせ失敗エラー */
131 - (void)notifySKRequestFailWithError:(NSError *)argError;
132 /* 購入制限エラー */
133 - (void)notifyPurchaseLimitedError:(NSString *)argErrorMsg;
134 /* リストアの失敗、キャンセルエラー */
135 - (void)notifyRestoreError:(SKPaymentQueue *)argQueue :(NSError *)argError;
136 /* 全てのリストアの終了通知 */
137 - (void)notifyRestoreCompleate:(SKPaymentQueue *)argQueue :(NSNumber*)argRestoreCntNumber;
138 
139 /* MPurchaseの拡張デレゲート */
140 /* 購入開始通知 */
141 - (void)notifyStartPurchaseTransaction:(SKProduct *)product;
142 /* リストア開始通知 */
143 - (void)notifyStartRestoreTransaction:(SKProduct *)product;
144 /* 購入完了デレゲートをチェーン */
145 - (void)notifyFinishPurchaseTransaction:(SKPaymentTransaction *)transaction :(NSString *)verifyStatus :(NSString *)base64Receipt :(BOOL)expiered :(NSDate *)expierDate;
146 /* 購入失敗デレゲートをチェーン */
147 - (void)notifyFinishFaildTransaction:(SKPaymentTransaction *)transaction;
148 /* リストア完了デレゲートをチェーン */
149 - (void)notifyFinishRestoreTransaction:(SKPaymentTransaction *)transaction :(NSString *)verifyStatus :(NSString *)base64Receipt :(BOOL)expiered :(NSDate *)expierDate;
150 /* キャンセル完了デレゲートをチェーン */
151 - (void)notifyFinishCancelTransaction:(SKPaymentTransaction *)transaction;
152 /* 承認待ちデレゲートをチェーン */
153 - (void)notifyFinishDeferredTransaction:(SKPaymentTransaction *)transaction;
154 
155 @end
Definition: MPurchaseAgent.h:78
Definition: MPurchaseAgent.h:126