微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决应用内购买的 Enqueued 和 Thread 问题?

如何解决如何解决应用内购买的 Enqueued 和 Thread 问题?

我查看了其余的代码以检查它是否完美,没有错过 Apple Inc 的 StoreKit 教程和 YouTube 频道。我相信我非常接近完成 IAP!不知何故,我注意到我得到了三个代码显示应用程序冻结后出现的灰色错误,而沙盒帐户 UIAlertController 用于购买产品。

一个代码结果:

错误:从 com.apple.main-thread(线程 1)入队

func purchase(product: IAPProduct) {
    
    guard let productToPurchase = products.filter({
                                                    
        $0.productIdentifier == product.rawValue
        
    }).first else {
       
        return
        
    }

    let payment = SKPayment(product: productToPurchase)
    
    // Code Crashed
    paymentQueue.add(payment)
    
}

我构建了 UITableView 来显示带有购买版本的剧集。错误与之前的代码相同。

if indexPath.row == 3 {
                    
     // code crashed
     IAPService.shared.purchase(product: .epsiode4non_consumable)

}

在这一个最终的代码,它显示一个单词,上面写着错误; “线程”没有提及任何问题。

extension IAPService: SKPaymentTransactionObserver {
func paymentQueue(_ queue: SKPaymentQueue,updatedTransactions transactions: [SKPaymentTransaction]) {

    for transaction in transactions {
        
        print(transaction.transactionState.status(),transaction.payment.productIdentifier)
        
        switch transaction.transactionState {
        
        case .purchased:
            
           //SKPaymentQueue.default().finishTransaction(transaction)
           SKPaymentQueue.default().remove(self)

            print("Successful Purchased!")
            queue.finishTransaction(transaction)
            
        case .Failed:
            
            //SKPaymentQueue.default().finishTransaction(transaction)
            SKPaymentQueue.default().remove(self)

            print("Purchase is Failed.")
            queue.finishTransaction(transaction)
            
        case .restored:
            
            //SKPaymentQueue.default().finishTransaction(transaction)
            SKPaymentQueue.default().remove(self)

            print("Purchase Restore is Successful.")
            queue.finishTransaction(transaction)
            
        case .deferred:
            
            //SKPaymentQueue.default().finishTransaction(transaction)
            SKPaymentQueue.default().remove(self)

            print("Purchase is Deferred.")
            queue.finishTransaction(transaction)
            
            
            // code crashed
        default: queue.finishTransaction(transaction)
            
        }
    }
 }

}

我不知道线程代表什么?有人可以给我一些有关 Thread 解决 IAP 问题的提示吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。