SpectrumCustomizer 2.2.0

SpectrumCustomizer 2.2.0

Tom Falkner维护。



  • Spectrum

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)。