SwiftUI 预览 SKProduct with introductoryPrice
SwiftUI Preview SKProduct with introductoryPrice
我正在尝试模拟 SKProduct,以便能够在 SwiftUI 的预览 canvas 中查看它。
我已经能够在 SKProduct 中创建一个带有便利初始化的虚拟 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 numberOfUnits 和 subscriptionPeriod 单位
我不确定要写入哪些键。
有什么想法吗?
它们是开放的类所以解决方案就是使用继承,就像下面的演示一样。
因此,您可以随心所欲地构造和设置 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
}
}
}
我正在尝试模拟 SKProduct,以便能够在 SwiftUI 的预览 canvas 中查看它。
我已经能够在 SKProduct 中创建一个带有便利初始化的虚拟 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 numberOfUnits 和 subscriptionPeriod 单位
我不确定要写入哪些键。
有什么想法吗?
它们是开放的类所以解决方案就是使用继承,就像下面的演示一样。
因此,您可以随心所欲地构造和设置 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
}
}
}