Spectrum iOS包装器
概述
Spectrum Customizer库提供了对UIView的包装,并提供有助于与Spectrum Customizer内容的交互的辅助方法。
将库添加到项目中
使用cocoapods安装
target 'App' do
pod 'SpectrumCustomizer', '~> 2.0.0'
end
在Interface Builder中添加SpectrumView
从Library中拖动一个UIView实例到Storyboard中。选择新的UIView,打开Identity Inspector。将类更改为'SpectrumCustomizerView',并将模块更改为Spectrum Customizer。为将负责SpectrumCustomizerView的UIViewController添加IBOutlet。
设置 SpectrumViewDelegate
实现 SpectrumViewDelegate 是在购物车中添加项目和向定制器提供定价数据所必需的。
public protocol SpectrumCustomizerViewDelegate: class {
func addToCart(sender: SpectrumCustomizerView, skus: [String], recipeSetId: String, options: [String: String])
func getPrice(sender: SpectrumCustomizerView, skus: [String], options: [String: String]) -> [SpectrumPrice]
}
以下是 SpectrumPrice 的实现。
public struct SpectrumPrice: Codable {
public var sku: String
public var price: Decimal
public var inStock: Bool
public init(sku: String, price: Decimal, inStock: Bool) {
self.sku = sku
self.price = price
self.inStock = inStock
}
}
然后,在实现 ViewController 中设置委托并初始化定制器。SpectrumCustomizerView 内部有一个 HTML 页面,它实现了 Spectrum 与宿主环境交互所需的必要方法。有两种初始化定制器的方式,要么通过 SKU,要么通过 Spectrum 菜谱 ID。
@IBOutlet weak var spectrum: SpectrumCustomizerView!
override func viewDidLoad() {
spectrum.delegate = self
// By sku. customizerUrl is a string url that points to the Spectrum Customizer Javascript:
spectrum.loadSku(sku: product2, customizerUrl: customizerUrl)
// or by recipe (sku is optional depending on implementation)
spectrum.loadRecipe(recipeId: recipeId, customizerUrl: customizerUrl, sku: product2)
}
示例实现
可以在仓库中找到一个简单的示例实现(SpectrumIntegration)。