10

这是我第一次使用 Store Kit,在我尝试恢复购买之前一切都很好。我已经看过其他几篇关于堆栈溢出的关于类似问题的帖子,但我还没有找到适合我的解决方案。

我的应用程序中有一个按钮,可以调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]. 这反过来又触发了SKPaymentTransactionObserver方法paymentQueueRestoreCompletedTransactionsFinished:。问题是paymentQueueRestoreCompletedTransactionsFinished:返回队列中的事务为零。

如果我随后尝试进行购买,则会通知我我已经进行了购买。这告诉我商店知道我的测试 Apple ID 在之前的尝试中成功进行了购买。那么为什么paymentQueueRestoreCompletedTransactionsFinished:在它的队列上返回一个空的事务集合呢?

有人提到沙盒的行为不正常,但在我上线 AppStore 之前,我需要看看它是否正常工作。

有任何想法吗?我错过了什么吗?

提前致谢。

4

4 回答 4

9

你在处理交易-paymentQueue:updatedTransactions:吗?此回调在paymentQueueRestoreCompletedTransactionsFinished:回调之前获取您恢复的交易。

您应该在内部进行还原处理和处理-paymentQueue:updatedTransactions:

于 2012-05-16T13:15:33.663 回答
8

我相信这是沙盒 App Store 的一个错误。我的恢复不适用于我的测试帐户(创建于 iOS 5.0 时代)。-paymentQueue:updatedTransactions:在恢复期间没有被调用。

正如process255的评论所建议的,我在 iTunes Connect 中创建了一个新的测试用户。使用新的测试帐户,一切正常!

于 2012-12-06T05:08:50.157 回答
0

取决于产品类型,哪些产品将重新排队:

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

作为替代方案,请阅读以下收据:

[[NSBundle mainBundle] appStoreReceiptURL]

收据的唯一问题是它们存储在本地,但苹果不会让它挂起..当然,购买也保存在苹果服务器上。通过以下方式刷新/加载收据:

    SKReceiptRefreshRequest *recreq = [[SKReceiptRefreshRequest alloc] init];
[recreq start];
于 2015-02-04T12:49:32.553 回答
0

我遇到了同样的问题,但我没有创建新用户,而是去了设置中的 iTunes 和 Aoo 商店,然后退出沙盒测试帐户并再次尝试。在职的!

于 2019-06-24T19:57:56.473 回答