アプリケーションのサブビューとして UIActivityIndicatior を持つ UIAlertView を追加しました。この alertView は、購入が進行中の場合にのみ表示されます。StoreObserver にアラート ビューを次のように配置しました。
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchasing:
[self stillPurchasing]; // this creates an alertView and shows
break;
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
break;
default:
break;
}
}
}
- (void) stillPurchasing {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"In App Purchase" message: @"Processing your purchase..." delegate: nil cancelButtonTitle: nil otherButtonTitles: nil];
self.alertView = alert;
[alert release];
UIActivityIndicatorView *ind = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge];
self.indicator = ind;
[ind release];
[self.indicator startAnimating];
[self.alertView addSubview: self.indicator];
[self.alertView show];
}
購入ボタンをタップすると、この UIAlertView が UIActivityIndicator と一緒に表示されます。しかし、トランザクションが完了すると、alertView はまだビューの上部にあり、削除されたのはインジケーターだけでした。私の質問は、alertView をどのように解放すればよいですか? または、どこで/いつリリースする必要がありますか。
これらのケースでアラート ビューとインジケーターを解放するために、これらのコマンドを追加しました。
[self.indicator stopAnimating];
[self.indicator removeFromSuperview];
[self.alertView release];
[self.indicator release];
購入がまだ進行中であることを示すために alertView を追加しただけです。ユーザーへのフィードバックを作成するための提案は、私に感謝します..
ありがとう