我使用适用于Mac OS的StoreKit框架解决了使用应用内购买的问题。问题是:
1)我在购买开始时调用addPayment方法
2)然后使用事务状态SKPaymentTransactionStatePurchasing调用两次updatedTransactions方法。并且在第二次调用[[SKPaymentQueue defaultQueue] .transactions count]之后返回2.
3)当购买完成updatedTransactions第三次调用事务状态SKPaymentTransactionStatePurchased。并且[[SKPaymentQueue defaultQueue] .transactions count]返回3.
4)然后我用状态SKPaymentTransactionStatePurchased完成事务。但是在defaultQueue中仍然存在两个与SKPaymentTransactionStatePurchasing的交易。他们活着直到应用程序终止。当我再次启动应用程序时,问题会重复出现。
为什么只有一个addPayment调用这么多交易?这个问题怎么解决?
答案 0 :(得分:1)
确保在以下任何事务状态之后调用finishTransaction方法:
1)SKPaymentTransactionStatePurchased
2)SKPaymentTransactionStateFailed
3)SKPaymentTransactionStateRestored
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
调用finishTransaction:对事务将其从队列中删除。