iphone - 如何根据此StoreKit消息开始下载?

标签 iphone ios in-app-purchase storekit

在全新安装的应用程序上,当我尝试重新购买商品以重新下载时,我的应用程序将购买请求发送到Store Kit。

然后,我得到SKPaymentTransactionStatePurchasing,并且Store Kit提示用户确认购买。

然后,Store Kit在iOS 7上以以下消息作为响应:“您已经购买了此应用内购买功能,但尚未下载。”。

然后,Store Kit失败并显示SKPaymentTransactionStateFailed,错误为

以前,StoreKit只会让用户重新下载内容。但是现在它失败,错误代码为2“无法连接到iTunes Store ”。如果执行完整还原,则Store Kit允许下载内容,但是此特定项目仍然失败。另请注意,测试设备具有WiFi和稳定的互联网连接,StoreKit能够确定已购买该产品。所以这个错误是假的。

这是iOS 7中的新变化吗?如何让用户重新下载单个项目而又不强制重新下载所有项目?

根据此Technical Note,如果存在未完成的购买交易,则会出现问题。我仔细检查了一下我称为完成交易的过程,并在收到错误后进行了处理。因此,交易确实完成了。

最佳答案

付款队列中有一些未完成的交易。要完成它们,请在使用paymentQueue.transactions方法添加观察者之后立即检查addTransactionObserver:数组。如果它包含一些事务,请按照您在paymentQueue:updatedTransactions:方法中的方式处理它们。
如果不这样做,则不为它们调用paymentQueue:updatedTransactions:,因为在您注册观察者时,它们已经在队列中。

顺便说一句,即使所有交易失败,也请确保为所有交易调用finishTransaction:。否则,他们将留在付款队列中并导致此问题。

关于iphone - 如何根据此StoreKit消息开始下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19302209/

相关文章:

iphone - AVAssetExportSession dealloc 在 iOS 4.3 中崩溃

iphone - 如何将远程 IO 麦克风连接到 2 个混音器单元的输入?

ios - UIRefreshControl 闪烁

ios - 消耗品 - 此应用内购买已被购买。它将免费恢复

android - 应用内结算测试 RESULT_DEVELOPER_ERROR

ios - NSFetchRequest 找不到实体名称的 NSEntityDescription

iphone - 录制视频时收到内存警告

iphone - 我希望在 iPhone 中实现 Platinum UPnP

ios - 从 macOS 和 iOS 应用程序访问 Realm 对象服务器

ios - paymentQueue RestoreCompletedTransactions 完成 : return queue with empty transactions array