ios - 无法完成购买非续订订阅交易

标签 ios swift storekit skpaymenttransaction

我想在我的应用中实现年度订阅,我使用 StoreKit 来实现。问题是,当我点击 subscriptionButton 时。应用抛出错误:'NSInvalidArgumentException',原因:'无法完成购买交易'。我被困在这个地方,无法解决我的问题。因此,我的 paymentQueue 代码如下所示:

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    print(transactions)
    for transaction in transactions {
        print(transaction.error ?? "")
        switch transaction.transactionState {
        case .deferred:
            print("deffered")

        case let .failed(err):
            print("failed: \(err)")
        case .purchased:
            let productID = p.productIdentifier
            selectProduct(productID: productID)
        case .purchasing:
            print("purhasing")
            print("produkt name: \(p.localizedTitle)") // after executing this line of code app crashes
        case .restored:
            let productID = p.productIdentifier
            selectProduct(productID: productID)
        }
        queue.finishTransaction(transaction)
    }
}

您有什么建议吗?我该如何解决?

最佳答案

在我的例子中,这个问题的有效解决方案是:

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        print(transaction.error ?? "")
        switch transaction.transactionState {
        case .deferred:
            print("deffered")
            queue.finishTransaction(transaction)
        case let .failed(err):
            print("failed: \(err)")
            queue.finishTransaction(transaction)
        case .purchased:
            let productID = p.productIdentifier
            selectProduct(productID: productID)
            queue.finishTransaction(transaction)
        case .purchasing:
            print("purhasing")
        case .restored:
            let productID = p.productIdentifier
            selectProduct(productID: productID)
            queue.finishTransaction(transaction)
        }
    }
}

关于ios - 无法完成购买非续订订阅交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41521553/

相关文章:

ios - 重力属性在 SpriteKit 场景中不起作用

iphone - 从NSThread调用方法

swift - 在 Swift 中将 Float 转换为 Int

swift - 如何在不出现性能问题的情况下暂停和停止 SKScene?

testing - 在沙盒模式下,应用内购买交易失败并出现 SKErrorPaymentCancelled

ios - 如何在SKProductDiscount中查看订阅期的单位(天、周、月或年)?

iOS9 SKPaymentQueue 相关问题 - 应用返回前台时事务意外终止

ios - 文本在 Interface Builder 上显示良好,在模拟器和非 Retina 显示器上显示模糊

ios - 如何使用代理 iOS swift 在当前 View 中显示警报?

ios - 出现键盘时移动垂直居中的内容