簡體   English   中英

SwiftUI 預覽 SK產品介紹價格

[英]SwiftUI Preview SKProduct with introductoryPrice

我正在嘗試模擬 SKProduct,以便能夠在 SwiftUI 的預覽 canvas 中查看它。

我已經能夠在 SKProduct 內創建一個帶有便利 init 的虛擬 SKProduct ...

//Mock Product
convenience init(identifier: String, price: String, priceLocale: Locale) {
    self.init()
    self.setValue(identifier, forKey: "productIdentifier")
    self.setValue(NSDecimalNumber(string: price), forKey: "price")
    self.setValue(priceLocale, forKey: "priceLocale")
}

但我不知道如何模擬 introductoryPrice 數據。 我需要subscriptionPeriod numberOfUnitssubscriptionPeriod 單位

我不確定要寫什么鍵。

有什么想法嗎?

它們是開放課程,因此解決方案就是使用 inheritance,如下面的演示所示。

因此,您可以隨心所欲地構建和設置您的MockSK*實體,並在任何需要真正SK*實例的地方傳遞。

import StoreKit

class MockSKProductSubscriptionPeriod: SKProductSubscriptionPeriod {
    private let _numberOfUnits: Int
    private let _unit: SKProduct.PeriodUnit

    init(numberOfUnits: Int = 1, unit: SKProduct.PeriodUnit = .year) {
        _numberOfUnits = numberOfUnits
        _unit = unit
    }

    override var numberOfUnits: Int {
        self._numberOfUnits
    }

    override var unit: SKProduct.PeriodUnit {
        self._unit
    }
}

class MockSKProduct: SKProduct {
    private var _subscriptionPeriod: SKProductSubscriptionPeriod

    init(subscriptionPeriod: SKProductSubscriptionPeriod = MockSKProductSubscriptionPeriod()) {
        _subscriptionPeriod = subscriptionPeriod
    }

    override var subscriptionPeriod: SKProductSubscriptionPeriod? {
        get {
            _subscriptionPeriod
        }
    }
}

備份

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM