2

このボードでいくつかの解決策を試しましたが、成功しませんでした。私が欲しいのは、ユーザーが をクリックBuy Buttonすると、アプリがアプリストアにアクセスするのを待っているUIAlertViewと表示されます。しかし、購入が完了したら、UIActivityIndicatorViewどこでこれを却下すればよいかわかりません。を却下するには、次を使用UIAlertViewすることを知っています。UIAlertView[alert dismissWithClickedButtonIndex:-1 animated:YES];

では、次の 2 つの質問の答えを教えてください。

1)以下の私のコードはOKですか、それともそれを達成するための他のより良いですか?

UIAlertView2)すべてのケースでどこで却下する必要がありますか:

  • ユーザーは購入に同意します
  • ユーザーが購入をキャンセル
  • 購入がうまくいかない

以下は私のコードです:

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
    UIAlertView *alert;
    for(SKPaymentTransaction *transaction in transactions){
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchasing:                   
                 alert = [[UIAlertView alloc]initWithTitle: @"In App Purchase" message: @"Processing your purchase..." delegate: nil cancelButtonTitle: nil otherButtonTitles: nil];
                UIActivityIndicatorView *ind = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge];
                [ind startAnimating];    
                [alert addSubview: ind];
                [alert show];
                [ind release];
                [alert release];
                break;
            case SKPaymentTransactionStatePurchased:
                [[SKPaymentQueue defaultQueue]finishTransaction:transaction];
                UIAlertView *tmp = [[UIAlertView alloc]
                                    initWithTitle:@"Complete"  
                                    message:@"You have bought the full version!"  
                                    delegate:self  
                                    cancelButtonTitle:nil  
                                    otherButtonTitles:@"Ok", nil];  
                [tmp show];  
                [tmp release];
                break;
            case SKPaymentTransactionStateRestored:
                [[SKPaymentQueue defaultQueue]finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                if (transaction.error.code !=SKErrorPaymentCancelled) {
                    [[SKPaymentQueue defaultQueue]finishTransaction:transaction];
                    UIAlertView *tmp = [[UIAlertView alloc]
                                        initWithTitle:@"Error"  
                                        message:@"Purchase not successful!"  
                                        delegate:self  
                                        cancelButtonTitle:nil  
                                        otherButtonTitles:@"Ok", nil];  
                    [tmp show];  
                    [tmp release];              
                }
                [[SKPaymentQueue defaultQueue]finishTransaction:transaction];
                break;
        }
    }
}
4

1 に答える 1

0

追加してみる

case SKPaymentTransactionStatePurchased:
[alert dismissWithClickedButtonIndex:-1 animated:YES];

case SKPaymentTransactionStateFailed:
[alert dismissWithClickedButtonIndex:-1 animated:YES];
于 2012-09-21T00:03:29.813 に答える