Shopping (iOS)
FireworkVideoShoppingDelegate
FireworkVideoSDK.shopping.delegate = <Your delegate>Shopping configurations
Customize click behaviors for shopping
Product Hydration
func fireworkShopping(
_ fireworkShopping: FireworkVideoShopping,
updateDetailsForProducts products: [ProductID],
forVideo video: VideoDetails,
_ productHydrator: any ProductHydrating) {
// Fetch latest product info
// based on product id list from host app server
// Call hydration API
for productID in products {
productHydrator.hydrateProduct(productID) { productBuilder in
// Update product info
productBuilder
.name("Latest product name")
.description("Latest product description")
.isAvailable(true)
// Update product variants.
// The strategy can be merge or replace.
// With merge strategy, we will merge these new variants into existing variants. We use variant id to match the variant.
// With `replace` strategy, we will replace existing variants with these new variants.
productBuilder.variants(.merge) { variantsBuilder in
// Build variant
variantsBuilder.variant("variant id1") { variantBuilder in
variantBuilder.formattedPrice(100, currencyCode: "USD")
.formattedOriginalPrice(120, currencyCode: "USD")
.url("Latest variant url1")
.imageUrl("Latest variant image url1")
.isAvailable(true)
.options([
"Color": "Latest variant color1",
"Size": "Latest variant size1"
])
return variantBuilder
}
// Build variant
variantsBuilder.variant("variant id2") { variantBuilder in
variantBuilder.name("Latest variant name2")
.formattedPrice(110, currencyCode: "USD")
.formattedOriginalPrice(130, currencyCode: "USD")
.url("Latest variant url2")
.imageUrl("Latest variant image url2")
.isAvailable(true)
.options([
"Color": "Latest variant color2",
"Size": "Latest variant size2"
])
return variantBuilder
}
return variantsBuilder
}
return productBuilder
}
}
}Purchase tracking
Last updated
Was this helpful?