2011-11-07 30 views
0

アプリにアプリ内購入を1つ追加しました。 ユーザーが「購入」ボタンをクリックしてトランザクションが終了すると、「購入」ボタンが新しい機能にアクセスするための別のボタンに置​​き換えられます。 しかし、そのページに戻るたびに、またはアプリを閉じてもう一度開くと、再び「購入」ボタンが表示されます。 ユーザーが新しいコンテンツを購入した場合、いつも新しいボタンを持つことができますか?アプリ購入:SKPaymentTransactionState購入済み

あなたが自分でこれを処理する必要が
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { 

    for (SKPaymentTransaction *transaction in transactions) { 

      switch (transaction.transactionState) { 

       case SKPaymentTransactionStatePurchasing: 

        break; 

       case SKPaymentTransactionStatePurchased: 

       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

          UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

           [button addTarget:self 

           action:@selector(myaction) 

           forControlEvents:UIControlEventTouchUpInside]; 

        [button setTitle:@"mytitle" forState:UIControlStateNormal]; 



        button.frame = CGRectMake(156.0, 248.0, 129.0, 36.0); 

        [self.view addSubview:button]; 

        break; 

       case SKPaymentTransactionStateRestored: 

        [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
         break; 

       case SKPaymentTransactionStateFailed: 

        if (transaction.error.code != SKErrorPaymentCancelled) { 

         NSLog(@"Errorr"); 

        } 

        [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 


      } 

    } 

} 

答えて

1

ユーザーがコンテンツを購入したという事実に関する情報を保存する必要があります。

これを実行する方法はたくさんあります。たとえば、NSUserDefaultsを使用できます。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
int version = [defaults integerForKey:@"db_version"];     // <- read int value from defaults 
[defaults setValue:[NSNumber numberWithInt:2] forKey:@"db_version"]; // <- set int value 
[defaults synchronize]; // <- save changes 
1

、StoreKitあなたはその上で助けにはなりません: はここに私のコードです。

たとえば、購入が完了したら、Userdefaultsに値を保存して、購入済みであることを覚えておいてください。 ViewControllerのviewDidLoadメソッドで、その値の有無をチェックし、適切なボタンを表示/非表示にします。

1

この状態をユーザーのprefsに保存する必要があります。ただ、SKPaymentTransactionStatePurchasedケースにそのようなものを追加します。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setBool:YES forKey:transaction.originalTransaction.payment.productIdentifier]; 
    [prefs synchronize]; 

、アプリをリニューアルした後、この設定をチェックし、適切なボタンを生成する必要があります。

関連する問題