gpt4 book ai didi

swift - SKProduct 第一次返回 nil,稍后工作

转载 作者:行者123 更新时间:2023-11-28 13:53:34 24 4
gpt4 key购买 nike

我的问题很奇怪——我以前从未在论坛上见过它。在请求 IAP (getPurchaseInfo() —> request.start()) 时,我第一次点击它时,它给我一个错误,没有找到任何产品。但是,如果我立即重试,它会接受产品 ID 并允许购买。 Apple 拒绝了我的提交,因为我一开始就有这个错误,而且我不知道如何让它消失。

我必须使用 IAP 的许多功能,这些是我认为可能有用的一些功能。

func getPurchaseInfo() {
if SKPaymentQueue.canMakePayments() {
let request = SKProductsRequest(productIdentifiers: NSSet(objects: self.productID) as! Set<String>)
request.delegate = self
request.start()
print("Completed Product Request.")
}

func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
var products = response.products
print(products.count)
if products.count == 0 {
//Tell the user there are no products found!
let prodError = UIAlertController(title: "Error", message: "No products were found.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
prodError.addAction(okAction)
self.view?.window?.rootViewController?.present(prodError, animated: true, completion: nil)
}
else {
product = products[0]
print(productID)
}

我打印了“Completed Product Request”,甚至得到了 1 的 products.count,以及正确的 productID,这意味着有一个产品。但是,我仍然收到一条错误消息(带有我为这种情况设置的 AlertController),告诉我没有产品,如果我删除 AlertController,我会向我显示应用程序崩溃的错误,这意味着找不到该产品.这是我点击按钮购买 IAP 的功能:

func purchase() {
SKPaymentQueue.default().add(self)
self.getPurchaseInfo()
if self.product == nil {
let errorPurchasing = UIAlertController(title: "Error", message: "There was an error requesting the purchase. Please try again.", preferredStyle: .alert)
let okayButton = UIAlertAction(title: "OK", style: .default, handler: nil)
errorPurchasing.addAction(okayButton)
self.view?.window?.rootViewController?.present(errorPurchasing, animated: true, completion: nil)
}
else {
let payment = SKPayment(product: self.product!)
SKPaymentQueue.default().add(payment)
if let myP = self.product {
let payment = SKPayment(product: myP)
SKPaymentQueue.default().add(payment)
}
}
}

当我第一次点击它时,我总是会收到我设置的“购买错误”警报,但在应用程序打开后不会出现。第一次找不到它但第二次找到它是没有意义的。

最佳答案

我建议在实例变量中保留 SKProductsRequest,这样它就不会被释放。

类似的东西

self.request = SKProductsRequest(....)

关于swift - SKProduct 第一次返回 nil,稍后工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54209192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com