0

我在应用程序购买中进行 iTunes 沙盒环境测试。我使用在 iTunes Connect 中创建的测试用户,并且购买代码运行良好。现在我正在测试恢复事务。这是恢复的代码:

    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

执行此代码一次后,每次我重新启动应用程序并使用代码注册 TransactionObserver:

    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];

我被要求输入用于测试还原的最后一个用户的密码。它的交易每次都会返回给我。因此,无法在“未购买”状态下测试应用程序。我已经尝试注销该用户并以非测试用户身份登录,但它没有改变,我总是被要求插入该测试用户的密码。

4

2 回答 2

2

终于找到问题了:当观察者在方法中收到恢复的事务时

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

我正在处理它并打电话

[[SKPaymentQueue defaultQueue] finishTransaction:transaction.originalTransaction];

问题是我还需要打电话

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

关于容器事务本身。错过了这一点,沙盒一遍又一遍地向我发送相同的交易,因为我从未确认收到它!

于 2013-04-13T21:08:58.017 回答
1

首先,您处于沙盒环境中,仅供测试用户使用。因此,请再次尝试创建新的测试用户。(您可以使用不存在的电子邮件地址创建一个测试用户,可以测试;))

我认为您将购买状态保存到 NSUserDefaults,因此要使用新用户进行测试并达到未购买的情况,您应该删除该应用程序并再次运行它。

祝你好运!

于 2013-07-04T13:08:07.880 回答