gpt4 book ai didi

iOS 应用内购买 - 无法解锁内容,因为该功能在另一个 View Controller 中

转载 作者:行者123 更新时间:2023-11-28 14:03:08 24 4
gpt4 key购买 nike

我已经使用“IAPHelper”类设置了应用内购买。我可以从 App Store 检索正确的信息并将其显示在一个 VC 中。一旦用户在该 VC 中选择了所需的购买项目,详细信息就会显示在下一个名为“Review”的 View Controller 上。这是实际购买发生的地方。我有一个在此 ReviewVC 中运行良好的“buyProduct”功能,并将产品付款发送到 IAPHelper 类的 SKPaymentTransactionObserver 的 paymentQueue。我需要通过“评论 VC”中的弹出窗口解锁内容,一旦购买状态在 SKPaymentTransactionObserver 中显示为“已购买”,它就会出现,所以我尝试了很多方法将此功能作为 paymentQueue 状态的一部分包括在内'已购买',但应用程序在成功付款后总是崩溃,一旦它达到显示弹出窗口的功能。这是一些代码 - 我不会包含所有 IAPHelper 代码,只包含相关部分:

open class IAPHelper: NSObject { ......
var review: ReviewVC! ...... }

extension IAPHelper: SKPaymentTransactionObserver {

public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for trans in transactions {
print("func IAPHelper = \(trans.transactionState.status(), trans.payment.productIdentifier)")
switch trans.transactionState {
case .purchasing: break
case .purchased: complete(transaction: trans)
break
case .failed : fail(transaction: trans)
case .restored : restore(transaction: trans)
case .deferred : break
// default: queue.finishTransaction(trans)
}
}
}

func complete(transaction: SKPaymentTransaction) {
deliverPurchaseNotificationFor(identifier: transaction.payment.productIdentifier)
SKPaymentQueue.default().finishTransaction(transaction)
review.showSuccessPopUp() //***ERROR IS HERE***Thread 1: EXC_BREAKPOINT (code=1, subcode=0x10426ac70)*****

}

这是 ReviewVC 文件中的代码:-

class ReviewVC: UIViewController {
@IBAction func buyTestButton(_ sender: Any) {
print("Buy button pressed - products = \(products?.localizedTitle ?? "No Product")")
buyProduct()
}

func buyProduct() {
let payment = SKPayment(product: products!)
SKPaymentQueue.default().add(payment as SKPayment)

}


//SUCCESSFUL PURCHASE:-
func showSuccessPopUp() {
UIView.animate(withDuration: 0.4) {
self.hideView.isHidden = false
}
UIView.animate(withDuration: 0.8) {
self.successPopUp.isHidden = false
}
}

被困在这个问题上好几天了,非常感谢任何帮助!!

最佳答案

问题是reviewnil

您将其声明为变量 var review: ReviewVC! 但是,您从未对其进行初始化。

初始化类似于review = Something

不确定您的代码在哪里调用 IAP() 但无论它在哪里,我都会做类似的事情:

var iap = IAP()
iap.review = self //if you are in the review class.

很难说,因为我不确定您在哪里声明 IAP 对象。

关于iOS 应用内购买 - 无法解锁内容,因为该功能在另一个 View Controller 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53325923/

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