このボードでいくつかの解決策を試しましたが、成功しませんでした。私が欲しいのは、ユーザーが をクリックBuy Button
すると、アプリがアプリストアにアクセスするのを待っているUIAlertView
と表示されます。しかし、購入が完了したら、UIActivityIndicatorView
どこでこれを却下すればよいかわかりません。を却下するには、次を使用UIAlertView
することを知っています。UIAlertView
[alert dismissWithClickedButtonIndex:-1 animated:YES];
では、次の 2 つの質問の答えを教えてください。
1)以下の私のコードはOKですか、それともそれを達成するための他のより良いですか?
UIAlertView
2)すべてのケースでどこで却下する必要がありますか:
- ユーザーは購入に同意します
- ユーザーが購入をキャンセル
- 購入がうまくいかない
以下は私のコードです:
-(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;
}
}
}