swift 如何优化收入猫代码以购买订阅

eqqqjvef  于 2022-12-02  发布在  Swift
关注(0)|答案(1)|浏览(195)

我有下面的swift代码,允许我在我的IOS应用程序中购买订阅。我使用的是收入猫SDK。

Purchases.shared.logIn(uid) { (purchaserInfo, created, error) in
            Purchases.shared.offerings { (offerings, error) in
                if let package = offerings?.current?.lifetime {
                    Purchases.shared.purchasePackage(package) { (transaction, purchaserInfo, error, userCancelled) in

问题是这段代码需要一段时间来运行。用户等待购买完成。我认为它是在调用苹果之前获取产品列表。有没有一种方法可以优化这段代码,例如在AppDelegate文件中加载应用程序加载时加载软件包?

aydmsdu9

aydmsdu91#

是的,正如您所描述的,您可以在AppDelegate中调用onAppear或getOfferings方法,并将包保存在对象中。
初始化对象

@State private var packages: [Package]? = nil

在AppDelegate中调用onAppear或Purchases.shared.getOfferings方法,并将捕获包保存在对象中。

Purchases.shared.getOfferings { (offerings, error) in
    if let offerings = offerings {
        if let current = offerings.current {
            packages = current.availablePackages
        } else if let sandbox = offerings.offering(identifier: "sandbox") {
            packages = sandbox.availablePackages
        }
    } else {
        if let error = error {
            print("ERROR: \(error)")
        }
    }
}

“Buy”(购买)按钮调用带有所选软件包的Purchases.shared.purchase

Purchases.shared.purchase(package: package) { (transaction, customerInfo, error, userCancelled) in
    if let customerInfo = customerInfo,
       let product = customerInfo.entitlements.all[package.storeProduct.productIdentifier],
       product.isActive == true {
        // Activate the In-App Purchases
    }
    if let err = error {
        // Handle Error
    }
}

注意:我在开发和测试环境中点击Buy按钮时也遇到了延迟,但在生产环境中没有任何延迟。

相关问题