iOS Sandbox - 无法两次购买消耗品

标签 ios objective-c app-store-connect

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

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/

相关文章:

ios - Core Image 在第一次渲染时慢很多倍

ios - 我可以为 Core Plot 散点图的范围设置动画吗?

objective-c - 什么会导致 CGDisplayCreateImageForRect 捕获或忽略光标?

ios - 验证错误 : The bundle contains disallowed nested bundles

ios - 此应用程序是否使用广告标识符 (IDFA)?使用 Firebase 时

objective-c - 向每个单元格添加额外的UIlabel

ios - 从应用程序打开电话 (iOS)

ios - 用于自定义 UIVIew 的 UI_APPEARANCE_SELECTOR

objective-c - 将数组写入 plist 并填充 tableview

ios - 被 iTunes Connect 拒绝,原因为 "Your iTunes Connect settings indicate that your app serves third-party advertisements. "