iOS 通用 Analytics (分析) 加強型電子商務

加強型電子商務通用 Analytics (分析) 資源提供的 Google Analytics (分析) 功能,可針對使用者購物體驗,評估使用者與產品的互動情形。包括產品曝光次數、產品點擊次數、產品詳細資料瀏覽次數、將商品加入購物車、開始結帳、交易和退款。

最新一代的 Google 代碼管理工具和 Google Analytics (分析) 行動應用程式,可與 Google 的行動應用程式平台 Firebase 搭配使用。 使用 Firebase SDK 評估應用程式時,您可以存取許多自動產生的行動應用程式報表,這些報表可進一步自訂,並可透過應用程式內的程式碼提供。這些報表會自動納入 App Store 的 iTunes 和 Google Play 處理的應用程式內購資料。 您可以導入電子商務應用程式建議事件,產生其他電子商務相關報表。目前只有通用 Analytics (分析) 資源提供詳盡的購物行為報表 (例如加強型電子商務)。

本文說明如何搭配使用 iOS 應用程式與 Firebase SDK,以便將加強型電子商務資料傳送至通用 Analytics (分析) 資源。建議您採用相同的事件和參數語法,為日後的電子商務報表設定更多階段。

首要步驟

在開始之前,請先為您的應用程式設定下列必備條件:

  1. 在您的應用程式中安裝及設定 Firebase 和 Google 代碼管理工具。 請務必使用 11 以上版本適用的 Firebase SDK for iOS。
  2. 在代碼管理工具容器中設定名為「promotions」的使用者定義變數,並指定下列設定:
    • 事件類型:自訂參數
    • 事件參數鍵:promotion
    • 預設值:未定義

實作

以下各節說明如何使用記錄參數記錄事件,以評估加強型電子商務活動,例如:

產品曝光次數

如要記錄產品曝光,請使用 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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:畫面瀏覽
  • 要設定的欄位:(欄位名稱) screenName (值,例如搜尋結果 畫面
  • 啟用加強型電子商務功能:是
  • 讀取來自 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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:事件
  • 事件類別,例如:電子商務
  • 事件動作,例如: 產品點擊
  • 啟用加強型電子商務功能:是
  • 讀取來自 Firebase 事件的資料
  • 觸發條件,例如:(自訂 > 部分事件) 事件名稱等於 select_content & {{promotions}} 等於未定義

商品詳情瀏覽

如要記錄產品詳細資料檢視畫面,請使用相關欄位定義的項目 (亦即產品) 來記錄 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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:畫面瀏覽
  • 要設定的欄位:(欄位名稱) screenName (值,例如產品詳細資料 畫面
  • 啟用加強型電子商務功能:是
  • 讀取來自 Firebase 事件的資料
  • 觸發條件,例如:(自訂 > 部分事件) 事件名稱等於 view_item 且
  • {{促銷}} 等於未定義

加入購物車的項目

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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:事件
  • 事件類別,例如:電子商務
  • 事件動作,例如: 放進購物車
  • 啟用加強型電子商務功能:是
  • 讀取來自 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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:事件
  • 事件類別,例如:電子商務
  • 事件動作,例如: 從購物車中移除
  • 啟用加強型電子商務功能:是
  • 讀取來自 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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:事件
  • 事件類別,例如:內部宣傳
  • 事件動作,例如:曝光
  • 非互動命中:是
  • 啟用加強型電子商務功能:是
  • 讀取來自 Firebase 事件的資料
  • 觸發條件,例如:(自訂 > 部分事件) 事件名稱等於 view_item 且
  • {{促銷}} 不等於未定義

促銷活動點擊/選項

記錄相關點擊,並利用相關欄位定義的促銷活動記錄 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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:事件
  • 事件類別,例如:內部宣傳
  • 事件動作,例如:
  • 啟用加強型電子商務功能:是
  • 讀取來自 Firebase 事件的資料
  • 觸發條件,例如:(自訂 > 部分事件) 事件名稱等於 select_content &{{promotions}} 不等於 未定義

結帳程序

開始結帳

記錄 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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:畫面瀏覽
  • 要設定的欄位:(欄位名稱) screenName (值,例如購物車螢幕
  • 啟用加強型電子商務功能:是
  • 讀取來自 Firebase 事件的資料
  • 觸發條件,例如:(自訂 > 部分事件) 事件名稱等於 start_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];

請參閱這個範例的代碼設定:

  • g 類型:通用 Analytics (分析)
  • ack Type:事件類型
  • ent 類別,例如:電子商務
  • 放棄動作,例如: 設定結帳選項
  • 加強型電子商務功能:是
  • 廣告資料來源: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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:畫面瀏覽
  • 要設定的欄位:(欄位名稱) screenName (值,例如感謝畫面
  • 啟用加強型電子商務功能:是
  • 讀取來自 Firebase 事件的資料
  • 觸發條件,例如:(自訂 > 部分事件) 事件名稱等於 ecommerce_purchase

退款

記錄指定相關交易 ID 的 kFIREventPurchaseRefund 事件,並選擇性 (定義部分退款) 使用項目 ID 和數量定義的一或多個項目 (亦即產品):

// (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];

請參閱這個範例的代碼設定:

  • 代碼類型:通用 Analytics (分析)
  • 追蹤類型:事件
  • 事件類別,例如:電子商務
  • 事件動作,例如:退款
  • 啟用加強型電子商務功能:是
  • 讀取來自 Firebase 事件的資料
  • 觸發條件,例如:(自訂 > 部分事件) 事件名稱等於購買_refund