func enhancedEcommerce()

in firoptions/FiroptionConfiguration/ViewController.swift [43:298]


  func enhancedEcommerce() {
    // Implementation

    // [START create_items]
    // A pair of jeggings
    var jeggings: [String: Any] = [
      AnalyticsParameterItemID: "SKU_123",
      AnalyticsParameterItemName: "jeggings",
      AnalyticsParameterItemCategory: "pants",
      AnalyticsParameterItemVariant: "black",
      AnalyticsParameterItemBrand: "Google",
      AnalyticsParameterPrice: 9.99,
    ]

    // A pair of boots
    var boots: [String: Any] = [
      AnalyticsParameterItemID: "SKU_456",
      AnalyticsParameterItemName: "boots",
      AnalyticsParameterItemCategory: "shoes",
      AnalyticsParameterItemVariant: "brown",
      AnalyticsParameterItemBrand: "Google",
      AnalyticsParameterPrice: 24.99,
    ]

    // A pair of socks
    var socks: [String: Any] = [
      AnalyticsParameterItemID: "SKU_789",
      AnalyticsParameterItemName: "ankle_socks",
      AnalyticsParameterItemCategory: "socks",
      AnalyticsParameterItemVariant: "red",
      AnalyticsParameterItemBrand: "Google",
      AnalyticsParameterPrice: 5.99,
    ]
    // [END create_items]

    // Selecting a product from a list

    // [START view_item_list]
    // Add item indexes
    jeggings[AnalyticsParameterIndex] = 1
    boots[AnalyticsParameterIndex] = 2
    socks[AnalyticsParameterIndex] = 3

    // Prepare ecommerce parameters
    var itemList: [String: Any] = [
      AnalyticsParameterItemListID: "L001",
      AnalyticsParameterItemListName: "Related products",
    ]

    // Add items array
    itemList[AnalyticsParameterItems] = [jeggings, boots, socks]

    // Log view item list event
    Analytics.logEvent(AnalyticsEventViewItemList, parameters: itemList)
    // [END view_item_list]

    // [START select_item]
    // Prepare ecommerce parameters
    var selectedItem: [String: Any] = [
      AnalyticsParameterItemListID: "L001",
      AnalyticsParameterItemListName: "Related products",
    ]

    // Add items array
    selectedItem[AnalyticsParameterItems] = [jeggings]

    // Log select item event
    Analytics.logEvent(AnalyticsEventSelectItem, parameters: selectedItem)
    // [END select_item]

    // Viewing product details

    // [START view_product_details]
    // Prepare ecommerce parameters
    var productDetails: [String: Any] = [
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 9.99
    ]

    // Add items array
    productDetails[AnalyticsParameterItems] = [jeggings]

    // Log view item event
    Analytics.logEvent(AnalyticsEventViewItem, parameters: productDetails)
    // [END view_product_details]

    // Adding/Removing a product from shopping cart

    // [START add_to_cart_wishlist]
    // Specify order quantity
    jeggings[AnalyticsParameterQuantity] = 2

    // Prepare item detail params
    var itemDetails: [String: Any] = [
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 19.98
    ]

    // Add items
    itemDetails[AnalyticsParameterItems] = [jeggings]

    // Log an event when product is added to wishlist
    Analytics.logEvent(AnalyticsEventAddToWishlist, parameters: itemDetails)

    // Log an event when product is added to cart
    Analytics.logEvent(AnalyticsEventAddToCart, parameters: itemDetails)
    // [END add_to_cart_wishlist]

    // [START view_cart]
    // Specify order quantity
    jeggings[AnalyticsParameterQuantity] = 2
    boots[AnalyticsParameterQuantity] = 1

    // Prepare order parameters
    var orderParameters: [String: Any] = [
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 44.97
    ]

    // Add items array
    orderParameters[AnalyticsParameterItems] = [jeggings, boots]

    // Log event when cart is viewed
    Analytics.logEvent(AnalyticsEventViewCart, parameters: orderParameters)
    // [END view_cart]

    // [START remove_from_cart]
    // Specify removal quantity
    boots[AnalyticsParameterQuantity] = 1

    // Prepare params
    var removeParams: [String: Any] = [
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 24.99
    ]

    // Add items
    removeParams[AnalyticsParameterItems] = [boots]

    // Log removal event
    Analytics.logEvent(AnalyticsEventRemoveFromCart, parameters: removeParams)
    // [END remove_from_cart]

    // Initiating the checkout process

    // [START start_checkout]
    // Prepare checkout params
    var checkoutParams: [String: Any] = [
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 14.98,
      AnalyticsParameterCoupon: "SUMMER_FUN"
    ];

    // Add items
    checkoutParams[AnalyticsParameterItems] = [jeggings]

    // Log checkout event
    Analytics.logEvent(AnalyticsEventBeginCheckout, parameters: checkoutParams)
    // [END start_checkout]

    // [START add_shipping]
    // Prepare shipping params
    var shippingParams: [String: Any] = [
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 14.98,
      AnalyticsParameterCoupon: "SUMMER_FUN",
      AnalyticsParameterShippingTier: "Ground"
    ]

    // Add items
    shippingParams[AnalyticsParameterItems] = [jeggings]

    // Log added shipping info event
    Analytics.logEvent(AnalyticsEventAddShippingInfo, parameters: shippingParams)
    // [END add_shipping]

    // [START add_payment]
    // Prepare payment params
    var paymentParams: [String: Any] = [
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 14.98,
      AnalyticsParameterCoupon: "SUMMER_FUN",
      AnalyticsParameterPaymentType: "Visa"
    ]

    // Add items
    paymentParams[AnalyticsParameterItems] = [jeggings]

    // Log added payment info event
    Analytics.logEvent(AnalyticsEventAddPaymentInfo, parameters: paymentParams)
    // [END add_payment]

    // Making a purchase or issuing a refund

    // [START log_purchase]
    // Prepare purchase params
    var purchaseParams: [String: Any] = [
      AnalyticsParameterTransactionID: "T12345",
      AnalyticsParameterAffiliation: "Google Store",
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 14.98,
      AnalyticsParameterTax: 2.58,
      AnalyticsParameterShipping: 5.34,
      AnalyticsParameterCoupon: "SUMMER_FUN"
    ]

    // Add items
    purchaseParams[AnalyticsParameterItems] = [jeggings]

    // Log purchase event
    Analytics.logEvent(AnalyticsEventPurchase, parameters: purchaseParams)
    // [END log_purchase]

    // [START log_refund]
    // Prepare refund params
    var refundParams: [String: Any] = [
      AnalyticsParameterTransactionID: "T12345",
      AnalyticsParameterCurrency: "USD",
      AnalyticsParameterValue: 9.99,
    ]

    // (Optional) for partial refunds, define the item ID and quantity of refunded items
    let refundedProduct: [String: Any] = [
      AnalyticsParameterItemID: "SKU_123",
      AnalyticsParameterQuantity: 1,
    ];

    // Add items
    refundParams[AnalyticsParameterItems] = [refundedProduct]

    // Log refund event
    Analytics.logEvent(AnalyticsEventRefund, parameters: refundParams)
    // [END log_refund]

    // Applying promotions

    // [START apply_promo]
    // Prepare promotion parameters
    var promoParams: [String: Any] = [
      AnalyticsParameterPromotionID: "T12345",
      AnalyticsParameterPromotionName:"Summer Sale",
      AnalyticsParameterCreativeName: "summer2020_promo.jpg",
      AnalyticsParameterCreativeSlot: "featured_app_1",
      AnalyticsParameterLocationID: "HERO_BANNER",
    ]

    // Add items
    promoParams[AnalyticsParameterItems] = [jeggings]

    // Log event when promotion is displayed
    Analytics.logEvent(AnalyticsEventViewPromotion, parameters: promoParams)

    // Log event when promotion is selected
    Analytics.logEvent(AnalyticsEventSelectPromotion, parameters: promoParams)
    // [END apply_promo]
  }