iOS沙盒-Can';不要购买消耗品两次

iOS沙盒-Can';不要购买消耗品两次,ios,objective-c,app-store-connect,Ios,Objective C,App Store Connect,问题:我正在尝试使用沙盒帐户测试应用内购买,但每次我尝试购买耗材两次时,都会收到以下错误消息: You've already purchased this In-App Purchase but it hasn't been downloaded. [Environment: Sandbox] 这仅在使用iOS

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

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中目标的摘要窗格中

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

[[SKPaymentQueue defaultQueue]addTransactionObserver:self]


我几天前也犯了同样的错误。这条线为我解决了这个问题。这行添加了应用程序中的观察者。

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

然后,我在我的应用程序中检查它是否确实下载了数据/购买BOOL/无论什么,如果他们需要再次下载,我会提供一个用户界面。后续下载似乎没有问题

为了防止撞车,我包括:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];

您是否100%确定它是耗材产品…?对于iOS 6和iOS 7以及非耗材产品,我遇到了这种情况。你知道怎么解决这个问题了吗?