我正在为应用内购买编写代码,并使用带有活动指示符的“正在处理...”视图,以便在启动购买时阻止“立即购买”按钮。但是,如果用户点击“取消”按钮,您怎么知道这些警报视图来自AppStore.app?
当按下取消按钮时是否有一个委托方法被调用?或者您的观点再次成为firstResponder
?我在这里缺少什么?
如果您认为不可能,请查看“我是T-Pain”应用程序......他们做了非常相似的事情,并在按下取消按钮后立即解除他们的观点。
答案 0 :(得分:8)
假设一切设置正确,您应该有一个实现 SKPaymentTransactionObserver 的对象,该对象将收到交易成功/失败/取消的回调。
在我的示例中,这是此调用中提到的 purchaseManager 对象
[[SKPaymentQueue defaultQueue] addTransactionObserver:purchaseManager];
当用户取消付款时,您应收到一个交易状态为已取消的回调:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
// THIS IS THE STATE YOU SHOULD SEE
[self failedTransaction:transaction];
break;
...
}
您可以使用此回调来解除您的观点等...