在完成应用内购买后更新视图



在此期间,我尝试在我的应用程序中实现在AppStore中的应用程序购买。所以我用Glassfy做了这个,一切都很好。

final class IAPManager {
static let shared = IAPManager()
private init() {}
enum Product: String {
case comfirstmember
var sku: String {
"numberOne"
}
}

@AppStorage("boughtFirst") var boughtFirst = false

func configure() {
Glassfy.initialize(apiKey: "31876r5654fgz4f95f0e6e6bh5d")
}
func getProduct(completion: @escaping (Glassfy.Sku) -> Void) {
Glassfy.sku(id: "numberOne") { sku, error in
guard let sku = sku, error == nil else {
return
}
completion(sku)
}
}
func purchase(sku: Glassfy.Sku) {
Glassfy.purchase(sku: sku) { transaction, error in
guard let t = transaction, error == nil else {
return
}
if t.permissions["numberOne"]?.isValid == true {
NotificationCenter.default.post(
name: Notification.Name("numberOne"),
object: nil
)
self.boughtFirst = true

}
}
}
func getPermissions() {
Glassfy.permissions { permissions, error in
guard let permissions = permissions, error == nil else {
return
}
if permissions["numberOne"]?.isValid == true {
NotificationCenter.default.post(
name: Notification.Name("numberOne"),
object: nil
)
self.boughtFirst = true
}
}
}
func restorePurchases() {
Glassfy.restorePurchases { permissions, error in
guard let permissions = permissions, error == nil else {
return
}
if permissions["numberOne"]?.isValid == true {
NotificationCenter.default.post(
name: Notification.Name("numberOne"),
object: nil
)
self.boughtFirst = true

}
}
}
}

但是现在我需要在购买成功完成后为用户更新视图,以显示他购买的内容。

NavigationView {
VStack {
if boughtFirst == false {
BuyExtraContent()
}
if boughtFirst == true {
AllView()
}
}
}

我想做到这一点尽可能简单,只是与AppStorage。但是,如果我将布尔值放在函数purchase中以从false切换到true,则没有任何变化。

我的问题是如何在成功购买后更新视图。

注:我有点迷失在SwiftUI,所以请解释一下,不要太复杂:)

使用一个状态变量。

您使用boughtFirst作为bool变量。确保它是一个可观察对象。尝试调用可观察对象,当你的变量改变时,视图会自动通知并更新自己。

我不确定你是否遵循了这个策略。

相关内容

  • 没有找到相关文章

最新更新