2
我嘗試了幾個解決方案,但從未成功。我想要的是當用戶點擊Buy Button
時,UIAlertView
與UIActivityIndicatorView
出現等待應用程序訪問應用程序商店。但是一旦購買完成,我不知道該去哪裏消除這個UIAlertView
。我知道,駁回UIAlertView
,我們使用:[alert dismissWithClickedButtonIndex:-1 animated:YES];
iOS:在應用程序購買與購買進度指示器UIActivityIndicatorView
所以,請你幫我回答兩個問題:
1)是我的代碼如下OK或任何其他更好的實現呢?
2)我應該在哪裏解僱UIAlertView
的所有情況:
- 用戶接受購買
- 用戶取消購買
- 購買不成功
以下是我的代碼:
-(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;
}
}
}
我做了,但是當你按下'購買Button'第二次,'UIAlertView'還有永遠 – DavidNg
秒時間?之後你會看到一個「完整」的消息? – CReaTuS
我點擊'購買按鈕',然後點擊'取消',然後再次點擊'購買按鈕',警報顯示爲永久 – DavidNg