本指南說明如何升級至 iOS 版 Google Analytics (分析) SDK 第 3 版。
資訊一覽:第 3 版的新功能
第 3 版中的 API 已重構,以便在原生和網路平台上更加一致。所有 V2 使用者都應留意下列變更:
- 現在,系統會使用單一
send:(NSDictionary *)params
方法傳送命中資料。 - 已移除自動用戶端工作階段管理功能。如有需要,您可以在管理介面中設定工作階段逾時。瞭解詳情。
- 偵錯模式已替換為
Logger
- 新增項目: 新增了
dryRun
標記,以免報表中出現傳送的資料。 - 新功能: iOS 裝置已支援當地幣別。
如需完整異動清單,請參閱「 變更記錄」一文。
事前準備
開始升級至第 3 版之前,您必須準備下列項目:
升級路徑
如要開始使用,請從目前的實作項目中選取升級至 v3 的路徑:
v1.x 至 v3
建議 Google Analytics (分析) iOS SDK v1.x 使用者按照第 3 版入門指南開始使用第 3 版。
v2.x 至 v3
第 2.x 版使用者應按照下列步驟升級至第 3 版:
- 將所有
send<hit-type>
便利方法替換為新的send:
方法:// v2 (Old) id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker sendView:@"HomeScreen"];
// v3 id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; // Set the screen name on the tracker so that it is used in all hits sent from this screen. [tracker set:kGAIScreenName value:@"Home Screen"]; // Send a screenview. // [tracker send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [tracker send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up.
- 第 3 版已移除自動的用戶端工作階段管理功能。您可在管理介面中設定工作階段逾時期間,預設值為「30 分鐘」。您也可以使用
sessionControl
參數手動啟動及停止工作階段。 進一步瞭解第 3 版中的工作階段管理。 -
自動螢幕追蹤的使用者應將
GAITrackedViewController.trackedViewName
的參照替換為GAITrackedViewController.screenName
:// v2 (Old) #import "GAITrackedViewController.h" @implementation AboutViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.trackedViewName = @"About Screen"; } // ... Rest of ViewController implementation.
// v3 #import "GAITrackedViewController.h" @implementation AboutViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.screenName = @"About Screen"; } // ... Rest of ViewController implementation.
- 偵錯模式已淘汰,請改用
Logger
:// v2 (Old) [GAI sharedInstance].debug = YES;
// v3 [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
- 已移除
GAI.useHttp
屬性。如要使用 HTTP (而非預設 HTTPS) 傳送命中,請改為在每個GAITracker
上設定kGAIUseSecure
參數:// v2 (Old) // AppDelegate.m #import AppDelegate.h #import GAI.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { static NSString const *kGaPropertyId = @"UA-XXXX-Y"; id
tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; // Send hits using HTTP (default=HTTPS). tracker.useHttps = NO; } // v3 // AppDelegate.m #import AppDelegate.h #import GAI.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { static NSString const *kGaPropertyId = @"UA-XXXX-Y"; id
tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; // Send hits using HTTP (default=HTTPS). [tracker set:kGAIUseSecure value:[@NO stringValue]]; } - 第 3 版 SDK 不會再在應用程式開啟時自動啟動新的工作階段。如果您想從第 2 版保留這項行為,必須在使用者啟動應用程式時實作自己的工作階段控制邏輯:
- SDK 不會再保留應用程式層級的停用設定,而且每次啟動應用程式時都必須設定 (預設為
NO
)。進一步瞭解如何設定應用程式層級的選擇不採用功能。
// AppDelegate.m #import AppDelegate.h #import GAI.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { static NSString const *kGaPropertyId = @"UA-XXXX-Y"; idtracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; // CAUTION: Setting session control directly on the tracker persists the // value across all subsequent hits, until it is manually set to null. // This should never be done in normal operation. // // [tracker set:kGAISessionControl value:@"start"]; // Instead, send a single hit with session control to start the new session. [tracker send:[[[GAIDictionaryBuilder createEventWithCategory:@"UX" action:@"appstart" label:nil value:nil] set:@"start" forKey:kGAISessionControl] build]];
參考資料
以下各節提供如何使用 V3 SDK 設定和傳送資料的參考範例。
在第 3 版中使用字典傳送資料
在 V3 中,系統會使用單一 send:
方法傳送資料,該方法採用 Google Analytics (分析) 欄位和值的 NSDictionary
做為引數。提供 GAIDictionaryBuilder
公用程式類別,可簡化建立命中程序:
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker set:kGAIScreenName value:@"Home Screen"]; // Previous V3 SDK versions. // [tracker send:[[GAIDictionaryBuilder createAppView] setValue:@"Premium" // Creates a Map of hit type 'AppView' (screenview) and set any additional fields. // forKey:[customDimensionForIndex:1] build]; // Build and return the dictionary to the send method. // SDK Version 3.08 and up. [tracker send:[[GAIDictionaryBuilder createScreenView] setValue:@"Premium" // Creates a Map of hit type 'ScreenView' and set any additional fields. forKey:[customDimensionForIndex:1] build]; // Build and return the dictionary to the send method.
GAIDictionaryBuilder
類別可用來建立任何支援的命中類型,例如事件:
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" // Event category (required) action:@"button_press" // Event action (required) label:@"play" // Event label value:nil] build]]; // Event value
在第 3 版中的追蹤器設定資料
您也可以使用 set:value:forKey
方法,直接在 GAITracker
上設定值。直接設定的值會套用至來自 GAITracker
的所有後續命中:
// Values set directly on a tracker apply to all subsequent hits. [tracker set:kGAIScreenName value:@"Home Screen"]; // This screenview hit will include the screen name "Home Screen". // [tracker send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [tracker send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up. // And so will this event hit. [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" action:@"button_press" label:@"play" value:nil] build]];
如要清除在 GAITracker
設定的值,請將屬性設為 nil
:
// Clear the previously-set screen name value. [tracker set:kGAIScreenName value:nil]; // Now this event hit will not include a screen name value. [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" action:@"button_press" label:@"play" value:nil] build]];