在应用内购买——尝试再次购买消耗品时——此应用内购买已经被购买过

20

我在iTunes Connect中有可消耗的应用内购买产品,在我的iPhone上尝试第二次购买时,它告诉我我已经购买过了。但这正是可消耗品的全部意义,用户可以一遍又一遍地购买。有什么建议吗?


我遇到了类似的问题。你解决了吗? - ravi sendhav
@ravisendhav 接受的答案对我有用。 - Roi Mulia
请看下面的代码,但是这个对我不起作用。 - ravi sendhav
你是否在控制台日志中看到以下信息: print("Received Payment Transaction Response from Apple"); - Devil
我们如何清除待处理的交易? - Dimple Shah
2个回答

30

如果您没有将原始购买的交易标记为已完成,就会发生这种情况。在成功处理购买后,您应该在- (void)paymentQueue:(SKPaymentQueue*)queue updatedTransactions:(NSArray*)transactions方法中进行标记。

您需要调用的方法是[[SKPaymentQueue defaultQueue] finishTransaction:transaction]


3
谢谢,这真的有帮助。为了清除之前未完成的交易,需要运行一次以下代码:let queue = SKPaymentQueue.default(); queue.transactions.forEach { queue.finishTransaction($0) } - benrudhart

-2
public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        switch (transaction.transactionState) {
        case .purchased:
            complete(transaction: transaction)
            break
        case .failed:
            fail(transaction: transaction)
            break
        case .restored:
            restore(transaction: transaction)
            break
        case .deferred:
            break
        case .purchasing:
            break
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接