如何拦截 StoreKit“购买对话框”以使 MBProgressHUD / UIProgressView 在正确的时间正确显示?
Posted
技术标签:
【中文标题】如何拦截 StoreKit“购买对话框”以使 MBProgressHUD / UIProgressView 在正确的时间正确显示?【英文标题】:How can I intercept the StoreKit "buy dialog" to make a MBProgressHUD / UIProgressView show up correctly and at the right times? 【发布时间】:2010-04-12 18:54:21 【问题描述】:我正在将 StoreKit 编程到我的 iPhone 应用程序中。 在按下按钮购买商品之前或之后,我似乎无法拦截购买商品对话框的等待时间。 我几乎想要的是在购买对话框出现之前和之后,但在购买的物品被解锁之前屏幕上的一个指示器。 我不希望我的用户被挂在屏幕上,不知道他们的购买是否成功。
另外,如果我不显示商店,只显示一个可预测的项目,我是否需要 requestProductData?任何使等待时间尽可能短的方法都是好的。
最后一件事: 在 - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 方法中,如果我在案例 SKPaymentTransactionStateFailed: 已完成的情况下显示 alertView,我会继续收到多个电话,即使购买完成一次。
谢谢!
请尽你所能提供帮助(只是想学习我的 iPhone 编程)。
【问题讨论】:
【参考方案1】:关于处理缓慢期间的活动视图的第一个问题。
您可以在支付队列中截取“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;
对于第二个问题,我在应用启动时开始加载我的商店商品,以便在用户到达商店时它们已准备就绪。由于它们是异步加载的,因此它们应该在用户进入商店视图时准备就绪。
最后一个问题不确定。
史蒂夫
【讨论】:
以上是关于如何拦截 StoreKit“购买对话框”以使 MBProgressHUD / UIProgressView 在正确的时间正确显示?的主要内容,如果未能解决你的问题,请参考以下文章