本文件說明瞭舊版 iOS SDK。如果您是第一次使用 Analyitcs,請使用最新的 SDK。瞭解詳情

iOS 專用 Google Analytics (分析) SDK v1 (舊版)

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

iOS 專用 Google Analytics (分析) SDK 能讓你輕鬆在 iOS 應用程式中導入 Google Analytics (分析)。本文說明如何整合 SDK 與您的應用程式。

SDK 總覽

此 SDK 採用的追蹤模型旨在追蹤傳統網站以及與傳統網頁中小工具的互動。因此,下方使用的字詞符合傳統的網站追蹤模型,且已對應到追蹤行動應用程式。建議您熟悉 Analytics (分析) 追蹤,以瞭解這個 SDK 的運作方式。

透過行動追蹤 SDK 使用下列 Analytics (分析) 互動類型來追蹤手機應用程式:

網頁瀏覽追蹤
網頁瀏覽是評估傳統網站流量的標準做法。由於行動應用程式不包含 HTML 網頁,因此您必須決定觸發網頁瀏覽要求的時機 (以及頻率)。此外,由於網頁瀏覽要求是專為建立目錄結構而設計,因此您必須在 Analytics (分析) 的「內容」報表中為請求提供描述性名稱,以便使用網頁路徑命名。在 Analytics (分析) 報表中,您選擇的名稱會填入網頁路徑,但實際上並不是 HTML 網頁。不過,透過建立路徑為呼叫提供額外分組,即可充分利用這項設定。
事件追蹤
在 Analytics (分析) 中,事件的用途是追蹤使用者與網頁元素 (不同於網頁瀏覽要求) 的互動。您可以使用 Google Analytics (分析) 的事件追蹤功能,在 Analytics (分析) 報表介面的「事件追蹤」部分進行其他呼叫。事件會按類別分組,也可能使用個別事件標籤,以便在報表中提供彈性。舉例來說,多媒體應用程式可以為影片類別執行播放/停止/暫停動作,並為每個影片名稱指派標籤。然後,Google Analytics (分析) 報表就會針對所有標有影片類別的事件匯總事件。如要進一步瞭解事件追蹤,請參閱事件追蹤指南
電子商務追蹤
使用電子商務追蹤功能,追蹤購物車交易和應用程式內購項目。 如要追蹤交易,請呼叫 addTransaction 方法來建立整體交易,以及購物車中每項產品的 addItem 方法。收集完成後,您就可以在 Google Analytics (分析) 介面的「電子商務」報表部分中查看相關資料。如要進一步瞭解電子商務追蹤,請參閱電子商務追蹤指南
自訂變數
自訂變數是名稱與值的配對,您可以將其插入追蹤程式碼中,以利 Google Analytics (分析) 追蹤。如要進一步瞭解如何使用自訂變數,請參閱自訂變數指南
NoThumb 支援
iPhone 版 SDK 內建有 NoThumb 程式庫版本和標準 Thumb 版本。如要使用 NoThumb 程式庫程式庫,請使用 libGoogleAnalytics_NoThumb.a 檔案,而不是 libGoogleAnalytics.a 檔案。

開始使用

需求條件

如要整合 Google Analytics (分析) 和 iOS 應用程式的追蹤功能,您必須符合以下條件:

設定

  • 開啟 Xcode 並建立新的 iPhone OS 專案。
  • GANTracker.hlibGoogleAnalytics.a 從 SDK 的程式庫目錄拖曳至新專案。
  • 在專案中納入 CFNetwork 架構,並連結至 libsqlite3.0.dylib

Google Analytics (分析) 行動應用程式 SDK 可與任何支援 iOS 2.0 以上版本的 iPhone 或 iPod Touch 搭配使用,也就是與所有支援原生應用程式的 iOS 版本相容。

SDK 含有一個範例應用程式,當中會說明專案設定成功後的外觀。您可以參考這個範本,為自家 Analytics (分析) 整合應用程式建立範本。

使用 SDK

開始使用 SDK 前,您必須先在 www.google.com/analytics 建立免費的帳戶,並使用虛假但描述性的網站網址 (例如 http://mymobileapp.mywebsite.com) 在該帳戶中建立新的網站資源。建立資源後,請記下或記下新建立的資源產生的網站資源 ID。

您必須在應用程式中或服務條款中指明使用者,這代表您有權匿名追蹤並回報使用者在應用程式中的活動。使用 Google Analytics (分析) SDK 時,您也必須遵守《Google Analytics (分析) 服務條款》,您必須在註冊帳戶時同意這些條款。

範例和最佳做法

您可以前往 code.google.com 的 analytics-api-samples 專案底下找到程式碼範例和最佳做法。

EasyTracker 程式庫

提供 EasyTracker 程式庫。這個 API 提供應用程式和 UIViewController 層級追蹤功能,幾乎不需要任何開發作業。您可以在 analytics-api-samples 專案的「下載」部分找到它。

啟動追蹤器

在透過 [GANTracker sharedTracker] 取得的單例模式中呼叫 startTrackerWithAccountID 方法,以啟動追蹤器。在應用程式委派的 applicationDidFinishLaunching 方法中,直接呼叫此方法通常很方便。傳遞網站資源 ID、必要的調派週期和選用委派對象。例如:

#import "BasicExampleAppDelegate.h"

#import "GANTracker.h"

// Dispatch period in seconds
static const NSInteger kGANDispatchPeriodSec = 10;

@implementation BasicExampleAppDelegate

@synthesize window = window_;

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  // **************************************************************************
  // PLEASE REPLACE WITH YOUR ACCOUNT DETAILS.
  // **************************************************************************
  [[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-0000000-1"
                                        dispatchPeriod:kGANDispatchPeriodSec
                                              delegate:nil];

  NSError *error;
  if (![[GANTracker sharedTracker] setCustomVariableAtIndex:1
                                                       name:@"iPhone1"
                                                      value:@"iv1"
                                                  withError:&error]) {
    // Handle error here
  }

  if (![[GANTracker sharedTracker] trackEvent:@"my_category"
                                       action:@"my_action"
                                        label:@"my_label"
                                        value:-1
                                   withError:&error]) {
    // Handle error here
  }

  if (![[GANTracker sharedTracker] trackPageview:@"/app_entry_point"
                                   withError:&error]) {
    // Handle error here
  }

  [window_ makeKeyAndVisible];
}

- (void)dealloc {
  [[GANTracker sharedTracker] stopTracker];
  [window_ release];
  [super dealloc];
}

@end

追蹤網頁瀏覽和事件

追蹤網頁瀏覽和事件很簡單:只要每次要觸發網頁瀏覽,呼叫追蹤器物件的 trackPageView。呼叫 trackEvent 以記錄事件。如要進一步瞭解網頁瀏覽和事件,請參閱上方的 SDK 總覽

使用自訂變數

新增自訂變數也很簡單,只要使用行動 SDK 提供的 setCustomVariableAtIndex 方法即可。因此,建議您提前規劃將每個自訂變數對應至的索引值,以免覆寫任何現有變數。如要進一步瞭解自訂變數,請參閱自訂變數指南。請注意,setCustomVariableAtIndex 方法不會直接傳送資料。而是與已追蹤的網頁瀏覽或事件一併傳送。追蹤網頁瀏覽或事件前,您必須呼叫 setCustomVariableAtIndex 。請注意,自訂變數的預設範圍是以網頁為範圍。

使用電子商務追蹤

在應用程式中啟用電子商務追蹤的方法有 4 種,分別是:

  • addTransaction
  • addItem
  • trackTransactions
  • clearTransactions

呼叫 addTransactionaddItem 會將交易或項目新增至內部電子商務緩衝區,以便新增更多項目和交易。只有在呼叫 trackTransactions 時,交易和項目才會傳送至調度工具,並排入 Google Analytics (分析)。

如要清除緩衝區,您可以呼叫 clearTransactions 方法。注意:喚回了先前傳送至調度工具的任何交易,以及 Google Analytics (分析) 已收集的任何交易。

下列程式碼範例可協助您開始作業。

  /**
   * The purchase was processed.  We will track the transaction and its associated line items
   * now, but only if the purchase has been confirmed.
   */
- (void) processPurchase:Purchase purchase {
  [[GANTracker sharedTracker] addTransaction:[purchase transactionId]
                                  totalPrice:[purchase totalPrice]
                                   storeName:[purchase store]
                                    totalTax:[purchase tax]
                                shippingCost:[purchase shipping]
                                   withError:&error];
  if (error) {
    // Handle error
  }
  for (PurchaseItem item in [purchase items]) {
    [[GANTracker sharedTracker] addItem:[purchase transactionId]
                                itemSKU:[item itemSKU]
                              itemPrice:[item price]
                              itemCount:[item count]
                           itemCategory:[item category]
                              withError:&error];
    if (error) {
      // Handle error
    }
  }

  if ([purchase isConfirmed]) {
    [[GANTracker sharedTracker] trackTransactions:&error];
  } else {
    // The purchase was denied or failed in some way.  We need to clear out
    // any data we've already put in the Ecommerce buffer.
    [[GANTracker sharedTracker] clearTransactions:&error];
  }
}

如要進一步瞭解電子商務,請參閱「電子商務追蹤指南」一文。

將 IP 去識別化

如要去識別化使用者的 IP 資訊,請將屬性 anonymizeIp 設為「是」。 藉此告知 Google Analytics (分析) 在 IP 儲存前移除 IP 位址的最後八位元,將 SDK 傳送的資訊去識別化。

以下舉例說明:

 [[GANTracker sharedTracker] setAnonymizeIp:YES];

你隨時可以設定 anonymizeIp

設定取樣率

您可以使用屬性 sampleRate 設定取樣率。 如果您的應用程式會產生大量 Analytics (分析) 流量,設定取樣率可能會導致系統無法使用取樣資料產生報表。只有不重複使用者時,系統會持續取樣,因此啟用取樣率時,趨勢和報表的完整性會保持完整。 sampleRate 參數是 NSUInteger,其值可以介於 0 到 100 (含)。以下範例將 sampleRate 調降為 95%:

 [[GANTracker sharedTracker] setSampleRate:95];

率為 0 可關閉命中產生功能,100 的速率則將所有資料傳送至 Google Analytics (分析)。 建議您在呼叫任何追蹤方法前,先設定 sampleRate

如要進一步瞭解取樣範例,請參閱取樣概念指南

批次命中

為了節省連線和電池負擔,建議您批次處理追蹤要求。您隨時可以提出追蹤物件呼叫 dispatch,藉此手動提出要求,也可以按照特定時間間隔進行呼叫。

已知問題

  • 參照連結網址/流量來源:目前無法在 iOS 裝置上追蹤應用程式下載的廣告活動/參照連結網址來源。
  • 在下列情況中,強烈建議您不要呼叫 dispatch
    • applicationWillTerminate 方法中
    • applicationDidEnterBackground
    • 呼叫 stopTracker 之前
    以免觸發命中兩次。請改用 dispatchSynchronous: 方法。
  • 針對不同的執行緒呼叫 GANTracker 方法可能會導致 SQLite 錯誤。請務必透過同一個執行緒發起所有通話。
  • 追蹤廣告活動

    一般廣告活動追蹤

    Google Analytics (分析) SDK for iOS 現已推出 1.3 版,方便您追蹤廣告活動參照連結網址。 舉例來說,如果您的應用程式導入自訂網址配置,您可以建立包含廣告活動查詢參數的網址。應用程式為了回應這類網址而啟動時,您可以擷取查詢參數並傳送至 setReferrer,讓資訊儲存在 Google Analytics (分析) 中。

    如要設定廣告活動參照連結網址資訊,請使用 setReferrer 方法,如下所示:

      [[GANTracker sharedTracker] setReferrer:referrer withError:&error];
    

    使用這項功能有兩項限制。您必須先呼叫 startTrackerWithAccountID 才能呼叫 setReferrer。之所以要做到這點,這是因為 Google Analytics (分析) 使用的 SQLite 資料庫並未在呼叫 startTrackerWithAccountID 之前設定,而 setReferrer 需要該資料庫。如未呼叫 startTrackerWithAccountID,您會收到錯誤訊息。

    第二個限制是,傳遞至 setReferrer 的參照連結網址字串必須符合特定格式。必須使用一組網址參數,且至少須包含 gclid 參數,或是個別 utm_campaign、utm_medium 和 utm_source。如果是後者,則可包含 utm_term 和 utm_content 參數。

    gclid 參數是自動標記功能的一部分,可將 Google Analytics (分析) 連結至 Google Ads。使用自動標記的廣告活動參照連結網址範例:

    referrer = @“gclid=gclidValue”;
    

    手動廣告活動參照連結網址字串看起來可能會像這樣:

    referrer = @“utm_campaign=campaign&utm_source=source&utm_medium=medium&utm_term=term&utm_content=content”;
    

    如果您傳遞了格式不正確的參照網址字串至 setReferrer,參照資訊就不會變更,您也會收到 false 的傳回值。傳回 true 值表示參照網址已更新,且會新增至日後的每次命中中。系統也會傳回錯誤,您可以檢查這項錯誤,以便在呼叫失敗時進一步瞭解錯誤。

    另請注意,當您呼叫 setReferrer 時,系統會啟動新的工作階段,並傳回 true。

    參數 必填 說明 範例
    utm_campaign 廣告活動名稱;用於關鍵字分析,識別特定產品促銷或策略廣告活動 utm_campaign=spring_sale
    utm_source 廣告活動來源;用來辨識搜尋引擎、電子報或其他來源 utm_source=google
    utm_medium 廣告活動媒介;用來識別電子郵件或單次點擊出價等媒介 utm_medium=cpc
    utm_term 廣告活動字詞;透過付費搜尋提供廣告關鍵字 utm_term=running+shoes
    utm_content 廣告活動內容;用於 A/B 測試和指定內容廣告,以區分指向相同網址的廣告或連結 utm_content=logolink
    utm_content=textlink