如何拦截StoreKit“购买对话框”以使MBProgressHUD / UIProgressView在正确的时间正确显示?

时间:2010-04-12 18:54:21

标签: iphone sdk storekit

我正在将StoreKit编程到我的iPhone应用程序中。 在按下按钮购买物品之前或之后,我似乎无法拦截购买物品对话框等待时间。 我想要的是在购买对话框出现之前和之后,但在购买的商品被解锁之前屏幕上的指示器。 我不希望我的用户被挂在屏幕上,不知道他们的购买是否通过。

另外,如果我没有显示商店,只有一个可预测的商品,我是否需要requestProductData?任何使等待时间尽可能少的事情都会很好。

最后一件事: 在 - (void)paymentQueue:(SKPaymentQueue *)队列updatedTransactions:(NSArray *)Transactions方法,如果我显示一个alertView,如果案例SKPaymentTransactionStateFailed:已经完成,我会继续多次通话,即使购买已完成一次。

谢谢!

请尽可能帮助您(只是尝试学习我的iPhone编程)。

1 个答案:

答案 0 :(得分:4)

关于处理缓慢延伸期间活动视图的第一个问题。

您可以拦截付款队列中的“SKPaymentTransactionStatePurchasing状态”以建立带有活动指标的警报视图。完成处理后,在已购买,已恢复和失败状态下关闭视图.StoreKit生成的AlertViews将使此一个人在整个过程中消失并重新出现。

case SKPaymentTransactionStatePurchasing:
                purchaseActivityIndicator = [[UIAlertView alloc] initWithTitle:@"Processing purchase" message:@"Please wait..." delegate:self cancelButtonTitle:nil otherButtonTitles:nil,nil];
                UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
                [activity setFrame:CGRectMake(121.0f, 80.0f, 36.0f, 36.0f)];
                [purchaseActivityIndicator addSubview:activity];
                [activity startAnimating];
                [activity release];
                [purchaseActivityIndicator show];
                [purchaseActivityIndicator release];
                break;

对于第二个问题,我在应用启动时启动了商店商品的加载,以便在用户到达商店时准备就绪。由于它们加载异步,因此在用户进入商店视图时应该就绪了。

在最后一个问题上不确定。

史蒂夫