2017-07-04 11 views
0

私はアプリ内購入(http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/comment-page-20/#comment-22550)のこのリンクに従っています。サンドボックステストユーザー(米国内)を使用すると、製品を正常に購入できます。購入ボタンを押すと、製品を復元する必要があります。商品がすでに購入されているかどうかはどうすればわかりますか?自動更新購読の領収書を確認する必要があります。どのようにできるのか?目的を用いてc。In App Purchase Restoreが機能していません

+0

非消耗品のアプリを購入していますか? – Surjeet

+0

いいえ、私はAuto_renewalサブスクリプションを使用しています。IAP – Ishwarya

答えて

0

まず、カスタム支払いクラスに準拠するプロトコルSKPaymentTransactionObserverを実装します。このクラスは、支払情報を受信するために使用することができます

.H:

#import <StoreKit/StoreKit.h> 

@interface PaymentObserver : NSObject<SKPaymentTransactionObserver> 
+ (instancetype)sharedInstance; 
@end 

.M:

@implementation PaymentObserver 

+ (instancetype)sharedInstance{ 
    static PaymentObserver * instance = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     instance = [[PaymentObserver alloc] init]; 
    }); 
    return instance; 
} 

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions { 
    for (SKPaymentTransaction *transaction in transactions) { 
     switch (transaction.transactionState) { 
       // Call the appropriate custom method for the transaction state. 
      case SKPaymentTransactionStatePurchasing: 
       break; 
      case SKPaymentTransactionStateDeferred: 
       break; 
      case SKPaymentTransactionStateFailed: 
       break; 
      case SKPaymentTransactionStatePurchased: 
       break; 
      case SKPaymentTransactionStateRestored: 
       //Purchased product info goes here. Get more details in transaction object. 
       break; 
      default: 
       break; 
     } 
    } 
} 

その後、AppDelegateで、支払い情報を取得するために、クラスを超える使用します:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    //...... 
    [[SKPaymentQueue defaultQueue] addTransactionObserver:[PaymentObserver sharedInstance]]; 
    //...... 
} 

PaymentObserverクラスはAppStoreから購入した製品情報を取得します。

主な手順は次のとおりです。あなたがそれらを処理しようとしている詳細があります。

+0

ありがとうございます。完全なソースコードまたは参照リンクを私に送ることができますか? – Ishwarya

+0

私たちは学習のためのクラスを作っただけで、実際の関数はそれほど多くなく、プロジェクトから切り離されたときにソースコードファイルが遵守されないことがあります。あなたがそれを望むなら、メールを残してください。 –

関連する問題