RevenueCat 产品数据未显示正确的数据

问题描述

我想将 IAP 的产品数据加载到我的应用程序的 UI 中(它将显示在 SwiftUI 视图中,但该应用程序通常是使用 UIKit 构建的)

我有一个函数,可以在其中调用 Purchases 类的 products 函数。它返回一个 SKProduct。我使用结果构建器添加一个额外的安全层。当它失败时,我会显示一个错误警报(我从来没有失败过)。此函数是包含与 Purchases 类的所有交互的类的一部分:

    func retrieve(_ id: ProductID,completed: @escaping(Result<SKProduct,LCError>) -> Void) {
        Purchases.shared.products([id.rawValue]) { products in
            guard !products.isEmpty else {
                completed(.failure(.unabletoRetrieveProduct))
                return
            }
            
            let skProduct = products[0]
            completed(.success(skProduct))
        }
    }

ProductID一个包含所有产品 ID 的自定义枚举,以便于访问和防止拼写错误

我在 viewmodel 中的一个小包装函数调用函数。然后我打开结果。 .failure 情况并不完美,我应该抛出一个错误,但就目前而言,它可以完成工作。当我测试我的应用程序时,它从未失败过:

    func getTipItem(for id: ProductID,title: String ) -> TipItem {
        var price: NSDecimalNumber = 1.0
        var priceSymbol: String = ""
        PurchaseService().retrieve(id) {  result in
            switch result {
            case .success(let product):
                price = product.price
                priceSymbol = product.priceLocale.currencySymbol ?? "Err$"
            case .failure(let error):
                 price = 1.0
                priceSymbol = error.localizedDescription
            }
        }
        return TipItem(title: title,price: price,currencySymbol: priceSymbol)
    }

struct TipItem: View {
    let title: String
    let price: NSDecimalNumber
    let currencySymbol: String
    var body: some View {
        HStack {
            Text(title)
            Spacer()
            Text("\(currencySymbol)\(price)")
        }.foregroundColor(Color(.label))
    }
}

然而,问题是当我的视图加载时,没有加载货币符号,价格只有 1(或 1.0000 等)。我知道它不会退回到 .faillure 案例中,因为我在认货币符号 Err添加一个前缀,以便知道什么时候出现问题。

这里是调试日志:

2021-02-16 22:59:14.854771+0100 Learn Chemistry[10847:629632] [Purchases] - DEBUG: Requesting products with identifiers: {(
    "tip_small_099"
)}
2021-02-16 22:59:14.955628+0100 Learn Chemistry[10847:629814] [Purchases] - DEBUG: Products request finished
2021-02-16 22:59:14.955751+0100 Learn Chemistry[10847:629814] [Purchases] - DEBUG: Valid Products:
2021-02-16 22:59:14.955819+0100 Learn Chemistry[10847:629814] [Purchases] - DEBUG: tip_small_099 - <SKProduct: 0x2814ca160>
2021-02-16 22:59:14.955899+0100 Learn Chemistry[10847:629814] [Purchases] - DEBUG: Invalid Product Identifiers - (
)

只有在第一次加载视图时才会出现此问题。当我返回上一个屏幕并返回到我展示产品的视图时,它正确地显示了它。

如何使正确的数据在第一次加载视图时也显示?还是 RC 框架中的错误

谢谢!

BSM

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)