适用于 iOS 的 Universal Analytics 增强型电子商务

增强型电子商务是 Google Analytics(分析)在 Universal Analytics 媒体资源中提供的一项功能,可让您衡量用户在整个购物体验过程中与产品的互动情况,其中可能包括产品展示、产品点击、产品详情浏览、将商品添加到购物车、开始结账流程、交易以及退款。

最新一代的移动应用版 Google 跟踪代码管理器和 Google Analytics(分析)均可与 Google 的移动应用平台 Firebase 结合使用。使用 Firebase SDK 衡量应用时,您将可以获取一系列自动生成的移动应用报告,而且还可以使用应用内代码进一步自定义和补充这些报告。这些报告将自动包含由 App Store(在 iTunes 上)或 Google Play 处理的应用内购买的相关数据。此外,您还可以为电子商务应用实现推荐事件,从而生成其他电子商务相关报告。目前,只有 Universal Analytics 媒体资源中提供有关购物行为(即增强型电子商务)的深度报告。

本文档介绍了如何搭配使用适用于 iOS 应用的跟踪代码管理器与 Firebase SDK,将增强型电子商务数据发送到 Universal Analytics 媒体资源。所使用的事件和参数语法应始终相同,以便为将来的其他电子商务报告做好准备。

初始步骤

开始之前,请为您的应用设置以下前提条件:

  1. 在您的应用中安装和配置 Firebase 和 Google 跟踪代码管理器。请确保您使用的是适用于 iOS 的 Firebase SDK 版本 11 或更高版本。
  2. 在您的跟踪代码管理器容器中,使用以下设置配置一个名为“promotions”的用户定义的变量
    • 事件类型:自定义参数
    • 事件参数键:promotions
    • 默认值:undefined

实现

以下小节介绍了如何使用必要的参数来记录事件,从而衡量下列增强型电子商务活动:

产品展示

通过 kFIRParameterItemID 参数以及用相关字段定义的一种或多种商品(即产品)来记录事件,从而衡量产品获得的展示情况。

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @1          // Position of the item in the list.
};

NSDictionary *product2 = @{
   kFIRParameterItemID : @"sku5678", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Capri",
   kFIRParameterItemCategory : @"Apparel/Women/Pants",
   kFIRParameterItemVariant : @"Black",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @35.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @2          // Position of the item in the list.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1, product2];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log select_content event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventViewSearchResults
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:屏幕浏览
  • 要设置的字段:(字段名称)screenName(例如,值)搜索结果屏幕
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = view_search_results

产品点击/选择

通过用相关字段定义的商品(即产品)来记录 kFIREventSelectContent 事件,从而衡量产品获得的点击情况:

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @1          // Position of the item in the list.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log select_content event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventSelectContent
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:事件
  • 事件类别,例如:电子商务
  • 事件操作:(例如)商品点击
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = select_content 且 {{promotions}} = undefined

产品详情浏览

通过用相关字段定义的商品(即产品)来记录 kFIREventViewItem 事件,从而衡量产品详情获得的浏览情况:

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log view_item event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventViewItem
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:屏幕浏览
  • 要设置的字段:(字段名称)screenName(例如,值)商品详情屏幕
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = view_item 且
  • {{promotions}} = undefined

向购物车添加产品

通过用相关字段定义的商品(即产品)来记录 kFIREventAddToCart 事件,从而衡量向购物车添加产品的情况:

/// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items
};

// Log add_to_cart event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventAddToCart
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:事件
  • 事件类别,例如:电子商务
  • 事件操作:(例如)向购物车添加商品
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = add_to_cart

从购物车移除产品

通过用相关字段定义的商品(即产品)来记录 kFIREventRemoveFromCart 事件,从而衡量从购物车移除产品的情况:

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items
};

// Log remove_from_cart event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventRemoveFromCart
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:事件
  • 事件类别,例如:电子商务
  • 事件操作:(例如)从购物车中移除商品
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = remove_from_cart

推广活动展示

通过用相关字段定义的推广商品来记录 kFIREventViewItem 事件,从而衡量推广活动的展示情况:

/// Define promotion with relevant parameters.
NSDictionary *promotion = @{
   kFIRParameterItemID : @"PROMO_1234", // promotion ID; either ITEM_ID or ITEM_NAME is.
   kFIRParameterItemName : @"Summer Sale", // promotion name.
   kFIRParameterCreativeName : @"summer_banner2",
   kFIRParameterCreativeSlot : @"banner_slot1"
};

// Prepare ecommerce dictionary.
NSArray *promotions = @[promotion];
NSDictionary *ecommerce = @{
   @"promotions" : promotions
};

// Log view_item, view_item_list, or view_search_results
// event with ecommerce bundle.
[FIRAnalytics logEventWithName:kFIREventViewItem
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:事件
  • 事件类别,例如:内部推广活动
  • 事件操作,例如:展示
  • 非互动命中:True
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = view_item 且
  • {{promotions}} ≠ undefined

推广活动点击/选择

通过用相关字段定义的推广活动来记录 kFIREventSelectContent 事件,从而衡量推广活动的点击情况:

// Define promotion with relevant parameters.
NSDictionary *promotion = @{
   kFIRParameterItemID : @"PROMO_1234", // promotion ID; either ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Summer Sale", // promotion name.
   kFIRParameterCreativeName : @"summer_banner2",
   kFIRParameterCreativeSlot : @"banner_slot1"
};

// Prepare ecommerce dictionary.
NSArray *promotions = @[promotion];

// Set properties for the event to be shown in the Google Analytics (Firebase) reports.
// These properties will not impact the Universal Analytics reporting.
NSDictionary *ecommerce = @{
   kFIRParameterItemID : @"PROMO_1234",
   kFIRParameterContentType : @"Internal Promotions",
   @"promotions" : promotions
};

// Log select_content, view_item_list, or view_search_results event with ecommerce bundle.
[FIRAnalytics logEventWithName:kFIREventSelectContent
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:事件
  • 事件类别,例如:内部推广活动
  • 事件操作:(例如)点击
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = select_content 且 {{promotions}} ≠ undefined

结账流程

开始结账

通过用相关字段定义的一种或多种商品(即产品)来记录 kFIREventBeginCheckout 事件,从而衡量结账流程的第一步:

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

// Set checkout step and optional checkout option.
NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterCheckoutStep : @1, // Optional for first step.
   kFIRParameterCheckoutOption : @"Visa" // Optional.
};

// Log BEGIN_CHECKOUT event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventBeginCheckout
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:屏幕浏览
  • 要设置的字段:(字段名称)screenName(例如,值)购物车屏幕
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = begin_checkout

结账选项

结账选项可让您衡量关于结账流程状态的额外信息。您可以将结账选项作为结账步骤事件的一部分进行衡量(如上文所示),也可以在用户于指定结账步骤的事件记录完毕后选择相应选项时进行衡量。

通过相应的 kFIRParameterCheckoutStepkFIRParameterCheckoutOption 参数来记录 kFIREventCheckoutProgress 事件,从而衡量用户在某个结账步骤后选择的结账选项:

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

// Set checkout step and optional checkout option.
NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterCheckoutStep : @2, // Optional for first step.
   kFIRParameterCheckoutOption : @"Visa" // Optional.
};

// Log CHECKOUT_PROGRESS event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventCheckoutProgress
                   parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:事件
  • 事件类别,例如:电子商务
  • 事件操作:(例如)设置结账选项
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = set_checkout_option

购买

通过用相关字段定义的一种或多种商品(即产品)来记录 kFIREventEcommercePurchase 事件,从而衡量购买情况:

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

NSDictionary *product2 = @{
   kFIRParameterItemID : @"sku5678", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Capri",
   kFIRParameterItemCategory : @"Apparel/Women/Pants",
   kFIRParameterItemVariant : @"Black",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @35.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1, product2];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results", // List name.
   kFIRParameterTransactionID : @"T12345",
   kFIRParameterAffiliation : @"Google Store - Online",
   kFIRParameterValue : @75.98, // Revenue.
   kFIRParameterTax : @3.80,
   kFIRParameterShipping : @5.34,
   kFIRParameterCurrency : @"USD",
   kFIRParameterCoupon : @"SUMMER2017"
};

// Log ecommerce_purchase event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventEcommercePurchase
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:屏幕浏览
  • 要设置的字段:(字段名称)screenName(例如,值)致谢屏幕
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = ecommerce_purchase

退款

通过指定的交易 ID,以及用商品 ID 和数量定义的一种或多种商品(即产品)(根据需要使用,适用于部分退款)来记录 kFIREventPurchaseRefund 事件,从而衡量退款情况:

// (OPTIONAL) For partial refunds, define the item IDs and
// quantities of products being refunded.
NSDictionary *refundedProduct = @{
   kFIRParameterItemID : @"sku1234", // Required for partial refund.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce bundle with transaction ID to be refunded.
NSDictionary *ecommerce = @{
   @"items" : @[ refundedProduct ],
   kFIRParameterTransactionID : @"T12345", // Required.
   kFIRParameterValue : @75.98 // Optional in Universal Analytics.
};

// Log purchase_refund event with ecommerce.
[FIRAnalytics logEventWithName:kFIREventPurchaseRefund
                    parameters:ecommerce];

点此可查看本例的代码配置:

  • 代码类型:Universal Analytics
  • 跟踪类型:事件
  • 事件类别,例如:电子商务
  • 事件操作:(例如)退款
  • 启用增强型电子商务功能:True
  • 数据读取来源:Firebase 事件
  • 触发器:例如(自定义 > 某些事件)事件名称 = purchase_refund