我正在为iOS应用编写应用内购买功能。我卖的是一些简单的消耗品(没有下载)。我的代码基于本教程/主题 How do you add an in-app purchase to an iOS application? 但是我注意到它与官方苹果文档冲突。
在此代码中,当事务因任何原因失败时,此代码 [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 叫做。但是在苹果页面上 https://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKPaymentQueue_Class/Reference/Reference.html#//apple_ref/occ/instm/SKPaymentQueue/finishTransaction: 这个已经写完了: "您的应用程序应该只在成功处理完交易并解锁用户购买的功能后才会调用finishTransaction。"
那么哪种方法是正确的?我应该在失败的交易中调用完成吗?
答案 0 :(得分:11)
根据Apple的In-App Purchase Programming Guide
您的应用需要完成每笔交易,关于是否 交易成功或失败。
因此,无论交易结果如何,您总是完成交易以将其从支付队列中删除,然后处理代码中的状态(成功或失败),以便为用户提供适当的信息