Virtusize iOS 集成
Virtusize 通过让客户将他们想买的商品的尺寸与他们已拥有的参考商品的尺寸进行比较(在零售商的商品页面上),帮助零售商在线展示服装、鞋类和包的尺寸和适合度。这是通过比较零售商产品的轮廓与客户参考商品的轮廓来实现的。Virtusize 是一个小工具,当点击位于商品页面上尺寸选择旁边的 Virtusize 按钮时打开。
在 https://www.virtusize.com 上了解更多关于 Virtusize 的信息
您需要一个唯一的 API 密钥和一个管理员账户,这些仅适用于 Virtusize 客户。请联系我们的销售团队成为客户。
这是专门用于原生 iOS 设备的集成脚本。有关网页集成,请参阅开发者文档https://developers.virtusize.com
目录
需求
- 苹果iOS 12.0+
- Xcode 12+
- Swift 5.0+
安装
如果您想继续使用较旧的1.x.x版本,请参阅分支 v1。
CocoaPods
使用CocoaPods依赖管理器进行安装。您可以使用以下命令安装它
$ gem install cocoapods
要将Virtusize SDK集成到您的Xcode项目中,请使用CocoaPods指定它,在您的Podfile
中添加以下配置
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '12.0'
use_frameworks!
target '<your-target-name>' do
pod 'Virtusize', '~> 2.5.2'
end
然后,运行以下命令
$ pod repo update
$ pod install
Swift 包管理器
从2.3.2
版本开始,Virtusize支持通过Swift 包管理器进行安装。
- 在Xcode中选择文件 > Swift Packages > 添加包依赖...,并将
https://github.com/virtusize/integration_ios.git
作为仓库URL输入。 - 选择最小版本为
2.5.2
- 点击下一步
Carthage
使用Carthage依赖管理器进行安装。您可以使用以下命令安装:
brew install carthage
要使用Carthage将Virtusize SDK集成到Xcode项目中,请在您的Cartfile
中指定它。
github "virtusize/integration_ios"
然后,运行以下命令
$ carthage update
有关如何链接框架和构建的进一步说明,请参阅Carthage
文档。
设置
1. 初始化
在App委托的application(_:didFinishLaunchingWithOptions:)
方法中设置SDK。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Virtusize.APIKey is required
Virtusize.APIKey = "15cc36e1d7dad62b8e11722ce1a245cb6c5e6692"
// For using the Order API, Virtusize.userID is required
Virtusize.userID = "123"
// By default, the Virtusize environment will be set to .global
Virtusize.environment = .staging
Virtusize.params = VirtusizeParamsBuilder()
// By default, the initial language will be set based on the Virtusize environment
.setLanguage(.JAPANESE)
// By default, ShowSGI is false
.setShowSGI(true)
// By default, Virtusize allows all the possible languages including English, Japanese and Korean
.setAllowedLanguages([VirtusizeLanguage.ENGLISH, VirtusizeLanguage.JAPANESE])
// By default, Virtusize displays all the possible info categories in the Product Details tab,
// including "modelInfo", "generalFit", "brandSizing" and "material".
.setDetailsPanelCards([VirtusizeInfoCategory.BRANDSIZING, VirtusizeInfoCategory.GENERALFIT])
.build()
return true
}
环境是从您运行集成所在区域确定的,可以是.staging
、.global
、.japan
或.korea
。
您可以通过使用VirtusizeParamsBuilder
来设置Virtusize.params
,以更改集成的配置。以下表格显示了可能的配置方法。
VirtusizeParamsBuilder
方法 | 参数类型 | 示例 | 描述 | 要求 |
---|---|---|---|---|
setLanguage | VirtusizeLanguage | setLanguage(.JAPANESE) | 设置集成将加载的初始语言。可能的值有VirtusizeLanguage.ENGLISH 、VirtusizeLanguage.JAPANESE 和VirtusizeLanguage.KOREAN 。 |
无需。默认情况下,初始语言将根据Virtusize环境设置。 |
setShowSGI | 布尔值 | setShowSGI(true) | 确定集成是否将获取SGI并使用SGI流程让用户将用户生成的内容添加到他们的衣橱中。 | 无需。默认情况下,ShowSGI设置为false。 |
setAllowedLanguages | VirtusizeLanguage 列表 |
setAllowedLanguages([VirtusizeLanguage.ENGLISH, VirtusizeLanguage.JAPANESE]) | 用户可以使用语言选择器切换到的语言。 | 无需。默认情况下,集成允许显示所有可能的语言,包括英语、日语和韩语。 |
setDetailsPanelCards | VirtusizeInfoCategory 列表 |
setDetailsPanelCards([VirtusizeInfoCategory.BRANDSIZING, VirtusizeInfoCategory.GENERALFIT]) | 将在产品详情标签中显示的信息类别。可能的类别包括:VirtusizeInfoCategory.MODELINFO 、VirtusizeInfoCategory.GENERALFIT 、VirtusizeInfoCategory.BRANDSIZING 以及VirtusizeInfoCategory.MATERIAL |
序号。默认情况下,集成会在产品详情标签中显示所有可能的类别信息。 |
2. 使用Virtusize SDK加载产品
在你产品的视图控制器中,你需要使用Virtusize.load
来填充Virtusize视图
- 使用以下方式创建一个
VirtusizeProduct
对象- 一个用于在Virtusize服务器中引用产品的
externalId
- 产品图片的
imageURL
- 一个用于在Virtusize服务器中引用产品的
- 将
VirtusizeProduct
对象传递给Virtusize.load
方法
override func viewDidLoad() {
super.viewDidLoad()
// Declare a `VirtusizeProduct` variable, which will be passed to the `Virtusize` views in order to bind the product info
let product = VirtusizeProduct(
// Set the product's external ID
externalId: "vs_dress",
// Set the product image URL
imageURL: URL(string: "http://www.example.com/image.jpg")
)
// Load the product in order to populate the `Virtusize` views
Virtusize.load(product: product)
}
3. 启用SNS身份验证
SNS身份验证流程需要切换到SFSafariViewController,该视图控制器将加载一个网页,用户可以在其中使用SNS账户登录。必须定义一个自定义URL方案,以将从SFSafariViewController返回的登录响应返回到您的应用。
您必须注册一个URL类型并发送到VirtusizeAuth.setAppBundleId
方法。
(1) 注册URL类型
在Xcode中,单击您的项目标签的Info选项卡,并选择URL Types。
添加一个新URL类型,并将URL方案和标识符设置为com.your-company.your-app.virtusize
(2) 设置应用的bundle ID
在App Delegate的application(_:didFinishLaunchingWithOptions:)
方法中,使用应用的bundle ID调用VirtusizeAuth.setAppBundleId
方法。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Virtusize initialization omitted for brevity
// Set the app bundle ID
VirtusizeAuth.setAppBundleId("com.your-company.your-app")
return true
}
❗IMPORTANT
- URL类型必须包含您的应用bundle ID并以.virtusize结尾。
- 如果您有多个应用目标,为它们添加URL类型。
4. 实现 VirtusizeMessageHandler (可选)
VirtusizeMessageHandler
协议有两个必需的方法
virtusizeController(_:didReceiveError:)
在控制器报告网络或反序列化错误时被调用。virtusizeController(_:didReceiveEvent:)
函数在控制器与 Virtusize API 之间数据交换时被调用。VirtusizeEvent
是一个struct
,包含必要的name
属性和可选的data
属性。
extension ViewController: VirtusizeMessageHandler {
func virtusizeController(_ controller: VirtusizeWebViewController?, didReceiveEvent event: VirtusizeEvent) {
print(event)
switch event.name {
case "user-opened-widget":
return
case "user-opened-panel-compare":
return
default:
return
}
}
func virtusizeController(_ controller: VirtusizeWebViewController?, didReceiveError error: VirtusizeError) {
print(error)
}
}
5. 允许 Cookie 共享(可选)
VirtusizeWebViewController
接受一个可选的 processPool:WKProcessPool
参数,以便允许 Cookie 共享。
// Optional: Set up WKProcessPool to allow cookie sharing.
Virtusize.processPool = WKProcessPool()
6. 监听产品数据检查(可选)
当按钮以 exernalId
初始化时,SDK 将调用我们的 API 检查产品是否已被解析并添加到我们的数据库中。
为了调试该 API 调用,您可以订阅 NotificationCenter
并观察两个 Notification.Name
别名
Virtusize.productDataCheckDidFail
,它接收包含错误原因消息的UserInfo
。Virtusize.productDataCheckDidSucceed
,如果调用成功则将被发送。
如果检查失败,按钮将被隐藏。
您可以检查示例项目以查看可能的实现方法之一。
Virtusize 视图
设置 SDK 后,添加一个 VirtusizeView
以便您的客户找到他们理想的大小。
Virtusize SDK 为客户提供了两个主要的 UI 组件
1. Virtusize 按钮
(1) 简介
VirtusizeButton是我们SDK中最简单的UI按钮。它会在网页视图中打开我们的应用,以支持客户找到合适的尺寸。
(2) 默认样式
在我们的Virtusize SDK中,Virtusize按钮有两种默认样式。
青色主题 | 黑色主题 |
---|---|
![]() |
![]() |
如果您喜欢,也可以自定义按钮样式。
(3) 使用方法
A. 添加Virtusize按钮
- 要在您店铺的产品页面上使用Virtusize按钮,您可以通过以下方式:
-
在Xcode的Interface Builder Storyboard中创建一个UIButton,在Identity检查器中将自定义类设置为
VirtusizeButton
,并确保按钮在加载时隐藏。 -
或者程序化添加VirtusizeButton
let virtusizeButton = VirtusizeButton() view.addSubview(virtusizeButton)
-
为了使用我们默认的样式,将VirtusizeButton的style属性设置为
VirtusizeViewStyle.TEAL
或VirtusizeViewStyle.BLACK
virtusizeButton.style = .TEAL
-
您也可以自定义按钮的样式属性。例如,titlelabel的文本、高度、宽度等。
-
B. 通过使用Virtusize.setVirtusizeView
方法,将Virtusize按钮以及您传递给Virtusize.load
的VirtusizeProduct
对象连接到Virtusize API。
Virtusize.setVirtusizeView(self, virtusizeButton, product: product)
2. Virtusize InPage
(1) 简介
Virtusize InPage 是一个按钮,类似于我们服务的启动按钮。此按钮还具有匹配向导的功能,以帮助客户找到合适的尺码。
InPage 类型
在 Virtusize SDK 中,有两种类型的 InPage。
InPage 标准 | InPage 迷你版 |
---|---|
![]() |
![]() |
-
InPage 不能与 Virtusize 按钮同时实现。请在您的在线商店中选择 InPage 或 Virtusize 按钮之一。
-
InPage Mini 必须始终与 InPage Standard 结合使用。
(2) InPage Standard
A. 用法
-
添加 VirtusizeInPageStandard
-
要在您商店的产品页面上使用 Virtusize InPage Standard,您可以:
-
为了使用我们的默认样式,请将 VirtusizeInPageStandard 的属性 style 设置为
VirtusizeViewStyle.TEAL
或VirtusizeViewStyle.BLACK
-
如果要将 CTA 按钮的背景颜色更改为其他颜色,请使用属性
inPageStandardButtonBackgroundColor
设置颜色。// Set the InPage Standard style to VirtusizeStyle.BLACK inPageStandard.style = .BLACK // Set the background color of the CTA button to UIColor.blue inPageStandard.inPageStandardButtonBackgroundColor = UIColor.blue
// Set the InPage Standard style to VirtusizeStyle.TEAL inPageStandard.style = .TEAL // Set the background color of the CTA button to a custom color using ColorLiteral inPageStandard.inPageStandardButtonBackgroundColor = #colorLiteral(red: 0.09803921569, green: 0.09803921569, blue: 0.09803921569, alpha: 1)
-
当您以编程方式添加 VirtusizeInPageStandard 并希望设置应用程序屏幕边缘与 VirtusizeInPageStandard 之间的水平边距时,您可以使用
setHorizontalMargin
如果要将 InPage Standard 的宽度设置为直接宽度,请使用自动布局约束。
// Set the horizontal margins to 16 inPageStandard.setHorizontalMargin(view: view, margin: 16) // Or set the direct width for InPage Standard programtically inPageStandard.translatesAutoresizingMaskIntoConstraints = false inPageStandard.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true inPageStandard.widthAnchor.constraint(equalToConstant: 350).isActive = true
-
如果要将 InPage Standard 的字体大小更改为其他大小,请使用属性
messageFontSize
和buttonFontSize
。inPageStandard.buttonFontSize = 12 inPageStandard.messageFontSize = 12
-
-
请使用
Virtusize.setVirtusizeView
方法将 Virtusize InPage Standard 与VirtusizeProduct
对象(您已传递给Virtusize.load
)连接起来。Virtusize.setVirtusizeView(self, inPageStandard, product: product)
B. 设计指南
-
默认设计
有两大种默认设计。
青色主题 黑色主题 -
布局变化
以下是一些可能的布局
1 缩略图 + 2 行信息 2 缩略图 + 2 行信息 1 缩略图 + 1 行信息 2 动画缩略图 + 2 行信息 -
推荐位置
-
UI定制
-
您可以
- 更改CTA按钮的背景色,只要它通过了 WebAIM对比度测试。
- 更改InPage的宽度,使其适合您的应用程序宽度。
-
您不能
- 更改界面组件,如形状和间距。
- 更改字体。
- 更改CTA按钮的形状。
- 更改消息。
- 更改或隐藏边框阴影。
- 隐藏包含VIRTUSIZE标志和隐私政策文本链接的页脚。
-
(3) InPage简版
这是InPage的简短版本,可以放置到您的应用中。简洁的设计适合那些客户正在浏览产品图片和尺寸表的情况。
A. 使用方式
-
添加一个VirtusizeInPageMini
-
您可以使用以下方式在您的店铺的产品页面上使用Virtusize InPage Mini:
-
为了使用我们的默认样式,将VirtusizeInPageMini的style属性设置为
VirtusizeViewStyle.TEAL
或VirtusizeViewStyle.BLACK
-
如果您想更改栏的背景颜色,可以使用
inPageMiniBackgroundColor
属性来设置颜色。inPageMini.style = .TEAL inPageMini.inPageMiniBackgroundColor = #colorLiteral(red: 0.09803921569, green: 0.09803921569, blue: 0.09803921569, alpha: 1)
-
当您程序化地添加VirtusizeInPageMini并且希望设置屏幕边缘与VirtusizeInPageMini之间的水平边距时,可以使用
setHorizontalMargin
如果您想为InPage Mini设置直接宽度,请使用自动布局约束。
// Set the horizontal margins to 16 inPageMini.setHorizontalMargin(view: view, margin: 16) // Or set the direct width for InPage Standard programtically inPageMini.translatesAutoresizingMaskIntoConstraints = false inPageMini.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true inPageMini.widthAnchor.constraint(equalToConstant: 350).isActive = true
-
如果您想更改InPage Mini的字体大小,可以使用
messageFontSize
和buttonFontSize
属性。inPageMini.messageFontSize = 12 inPageMini.buttonFontSize = 10
-
-
将Virtusize InPage Mini以及
VirtusizeProduct
**对象(您已传递给**Virtusize.load
) **通过使用**Virtusize.setVirtusizeView
**方法连接到Virtusize API。Virtusize.setVirtusizeView(self, inPageMini, product: product)
B. 设计指南
-
默认设计
有两大种默认设计。
青色主题 黑色主题 -
推荐位置
产品图像下方 尺寸表下方或附近 -
默认字体
- 日语
- Noto Sans CJK JP
- 12点(消息)
- 10点(按钮)
- 韩语
- Noto Sans CJK KR
- 12点(消息)
- 10点(按钮)
- 英语
- San Francisco(系统默认)
- 14点(消息)
- 12点(按钮)
- 日语
-
UI自定义
- 您可以
- 只要它通过 WebAIM对比度检查器,就可以更改栏目的背景颜色。
- 您不能
- 更改字体。
- 更改CTA按钮的形状。
- 更改消息。
- 您可以
订单API
订单API允许Virtusize显示客户的购买历史记录中最近购买的商品,并使用这些商品来比较他们想要购买的新商品。
1. 初始化
在向Virtusize发送订单之前,请确保设置了用户ID。您可以在以下位置设置用户ID:
在App委托的application(_:didFinishLaunchingWithOptions:)
方法中设置,在应用程序启动之前
或者
在应用程序启动后,在您的视图控制器中设置
Virtusize.userID = "123"
2. 创建用于订单数据的 VirtusizeOrder 结构
VirtusizeOrder 结构用于传递给 Virtusize.sendOrder
方法,具有以下属性
注意: * 表示该属性是必需的
VirtusizeOrder
属性 | 数据类型 | 示例 | 描述 |
---|---|---|---|
externalOrderId* | String | "20200601586" | 客户端提供的订单 ID |
items* | 一个包含 VirtusizeOrderItem 结构的数组 |
见下表 | 订单项目的数组。 |
VirtusizeOrderItem
示例
var virtusizeOrder = VirtusizeOrder(externalOrderId: "2020060812345")
let item = VirtusizeOrderItem(
externalProductId: "A00001",
size: "L",
sizeAlias: "Large",
variantId: "A00001_SIZEL_RED",
imageUrl: "http://images.example.com/products/A00001/red/image1xl.jpg",
color: "Red",
gender: "W",
unitPrice: 5100.00,
currency: "JPY",
quantity: 1,
url: "http://example.com/products/A00001"
)
virtusizeOrder.items = [item]
3. 发送订单
当用户下单时,在您的活动或碎片中调用 Virtusize.sendOrder
方法。onSuccess
和 onError
回调是可选的。
Virtusize.sendOrder(
virtusizeOrder,
// This success callback is optional and gets called when the app successfully sends the order
onSuccess: {
print("Successfully sent the order")
},
// This error callback is optional and gets called when an error occurs
// when the app is sending the order
onError: { error in
print("Failed to send the order, error: \(error.debugDescription)")
})
在原生化阅器应用中启用virtusize的sns登录
构建
您需要安装SwiftLint。
make build
运行所有测试
make test
路线图
请查看路线图以获取即将推出的功能和预期发布日期。
许可
版权所有 (c) 2018-21 Virtusize CO LTD (https://www.virtusize.jp)