问题:我正在尝试使用沙盒帐户测试应用内购买,但每次我尝试购买消耗品两次时,我都会收到以下错误消息:
You've already purchased this In-App Purchase but it hasn't been downloaded.
[Environment: Sandbox]
只有在使用 iOS < 6 时才会发生这种情况。我读到这可能是一个与沙盒相关的问题。有谁知道这个说法是否属实?
我确定正在进行以下调用以完成第一笔交易:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction]
我也尝试过进行此调用以清除队列,但不幸的是:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
我还要确保在测试 iAP 之前,我已退出 iTunes 商店。此外,我还检查了构建和版本号是否位于 Xcode 中我的 Target 的 Summary Pane 中。
最佳答案
我遇到过类似的情况,如果我再次尝试购买,我会收到此消息然后崩溃。在我看来,这似乎只是 finishTransaction 尚未完成(无论出于何种原因)的消息。根据我的日志,它授予了一个 SKTransactionStateFailed 更新交易,允许我重新发送 finishTransaction。
然后我在我的应用程序中检查它实际上已经下载了数据/购买 BOOL/任何东西,并在他们需要再次下载时显示一个用户界面。后续下载似乎没有问题。
为了防止崩溃,我包括:
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
关于iOS Sandbox - 无法两次购买消耗品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170105/