7

问题:我正在尝试使用沙盒帐户在应用程序购买中进行测试,但每次尝试购买消耗品两次时,我都会收到以下错误消息:

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 窗格中。

4

2 回答 2

1

我有类似的情况,如果我再次尝试购买它,我会收到此消息然后崩溃。对我来说,这似乎只是一条finishTransaction尚未完成的消息(无论出于何种原因)。根据我的日志,它授予SKTransactionStateFailed更新事务,允许我重新发送finishTransaction

然后我在我的应用程序中检查它实际上已经下载了数据/购买 BOOL/任何东西,并在他们需要再次下载时显示用户界面。后续下载似乎没有问题。

为了防止崩溃,我包括:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
于 2013-03-22T00:53:33.433 回答
0

问题可能是您的代码中缺少这一行

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

几天前我得到了同样的错误。这条线为我解决了这个问题。此行为应用内添加了观察者。

于 2013-03-17T00:26:27.017 回答