gpt4 book ai didi

ios - 编写完成处理程序的最佳方法是什么

转载 作者:可可西里 更新时间:2023-11-01 01:07:35 27 4
gpt4 key购买 nike

我目前正致力于在我的应用程序中实现应用程序内购买,在恢复购买后我想调用完成来执行向用户显示警报的操作。我是这样做的,发现有帖子说它甚至可能不会被执行。我怎样才能正确地构造这个。

func restoreIAPPurchases(completion: (() -> Void)) {
if !self.canMakePayments {
return
}
self.paymentQueue.restoreCompletedTransactions()
completion()
}

let alertController = UIAlertController.vy_alertControllerWithTitle(nil, message: "Restore will reprocess your existing subscription. You will not be charged", actionSheet: false)
alertController.addAction("Ok")
alertController.addActionWithTitle("Restore", style: .default) {
IAPService.shared.restoreIAPPurchases {
UIAlertController.vy_showAlertFrom(self, title: "Restore complete", message: "Successfully restored purchase")
}
}
alertController.presentFrom(self)

最佳答案

"I was doing it this way and found a post that says it might not even be executed"

它可能不会被执行,因为您没有在所有路径上调用完成处理程序。

正如 Sh_Khan 在他的回答中提到的那样,您在这里实际上不需要完成处理程序,您需要使用委托(delegate)方法来了解它何时完成以及它是否成功。但是您的特定代码的特殊问题是您没有在 if 语句中调用完成。

if !self.canMakePayments {
return
}

应该是

guard canMakePayments else {
completion()
return
}

在您的代码中,如果 canMakePayments 为假,那么您的完成代码将不会执行。

关于ios - 编写完成处理程序的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54236716/

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