เอกสารนี้แสดงภาพรวมเกี่ยวกับคุณลักษณะการกำหนดค่าขั้นสูงบางอย่างของ Google Analytics SDK สำหรับ iOS v3
ภาพรวม
Google Analytics SDK สำหรับ iOS มีคลาส
GAITracker
สำหรับตั้งค่าและส่งข้อมูลไปยัง Google Analytics และซิงเกิล
GAI
ที่ทำหน้าที่เป็นอินเทอร์เฟซสำหรับการกำหนดค่าส่วนกลางของการใช้งาน
การเริ่มต้น
ก่อนที่จะวัดข้อมูลได้ คุณต้องเริ่มต้นเครื่องมือติดตามอย่างน้อย 1 รายการผ่าน GoogleAnalytics
Singleton โดยตั้งชื่อให้เครื่องมือติดตามและรหัสพร็อพเพอร์ตี้ Google Analytics ดังนี้
// Initialize a tracker using a Google Analytics property ID. [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"];
แต่ตอนนี้สามารถใช้เครื่องมือติดตามนี้ในการตั้งค่าและส่งข้อมูลไปยัง Google Analytics ได้แล้ว
การตั้งค่าและการส่งข้อมูล
ระบบจะส่งข้อมูลไปยัง Google Analytics โดยการตั้งค่าการแมปคู่พารามิเตอร์-ค่าในเครื่องมือติดตาม และส่งผ่านเมธอด set
และ send
ดังนี้
/* * Send a screen view to Google Analytics by setting a map of parameter * values on the tracker and calling send. */ // Retrieve tracker with placeholder property ID. id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"]; NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"appview", kGAIHitType, @"Home Screen", kGAIScreenName, nil]; [tracker send:params];
คลาส GAIDictionaryBuilder
ช่วยลดความซับซ้อนของกระบวนการสร้าง Hit และเหมาะสำหรับกรณีการใช้งานส่วนใหญ่ ในส่วนนี้เราจะส่งมุมมองหน้าจอแบบเดียวกันที่มีบรรทัดโค้ดน้อยลงได้ดังนี้
// Previous V3 SDK versions. // Sending the same screen view hit using [GAIDictionaryBuilder createAppView] // [tracker send:[[[GAIDictionaryBuilder createAppView] set:@"Home Screen" // forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. // Sending the same screen view hit using [GAIDictionaryBuilder createScreenView] [tracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen" forKey:kGAIScreenName] build]];
ไวยากรณ์ Ampersand ของ Measurement Protocol
นอกจากนี้คุณยังสามารถตั้งค่าสำหรับ Hit เดียวได้โดยตั้งค่าใน Builder
หรือสำหรับ Hit ที่ตามมาทั้งหมดโดยการตั้งค่าในออบเจ็กต์เครื่องมือติดตามโดยใช้เครื่องหมายและไวยากรณ์ของ Measurement Protocol
// Sending the same screen view hit using ampersand syntax. // Previous V3 SDK versions. // [tracker send:[[[GAIDictionaryBuilder createAppView] set:@"Home Screen" // forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. [tracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen" forKey:kGAIScreenName] build]];
ดูรายการพารามิเตอร์ Measurement Protocol ที่มีอยู่ทั้งหมดได้ที่ข้อมูลอ้างอิงพารามิเตอร์ Measurement Protocol
การใช้ค่ากับ Hit หลายรายการ
ค่าใดๆ ที่ตั้งค่าไว้ในตัวติดตามโดยตรงจะคงอยู่และใช้กับ Hit หลายรายการ ดังตัวอย่างต่อไปนี้
// May return nil if a tracker has not yet been initialized with // a property ID. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; // Set screen name on the tracker to be sent with all hits. [tracker set:kGAIScreenName value:@"Home Screen"]; // Send a screen view for "Home Screen". // [tracker send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [tracker send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up. // This event will also be sent with &cd=Home%20Screen. [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"UX" action:@"touch" label:@"menuButton" value:nil] build]]; // Clear the screen name field when we're done. [tracker set:kGAIScreenName value:nil];
ควรตั้งค่าในเครื่องมือติดตามโดยตรงเฉพาะค่าที่คุณต้องการคงไว้ในหลายๆ Hit เท่านั้น การตั้งชื่อหน้าจอในเครื่องมือติดตามก็น่าจะเหมาะสม เนื่องจากสามารถใช้ค่าเดียวกันนี้กับการดูหน้าจอและ Event Hit ที่ตามมาได้ อย่างไรก็ตาม ไม่แนะนําให้ตั้งค่าช่อง เช่น ประเภท Hit บนเครื่องมือติดตาม เนื่องจากมีแนวโน้มว่าจะมีการเปลี่ยนแปลงตาม Hit แต่ละรายการ
การใช้ตัวติดตามหลายอย่าง
อาจใช้เครื่องมือติดตามหลายรายการในการใช้งานครั้งเดียว ซึ่งมีประโยชน์ในการส่งข้อมูลไปยังพร็อพเพอร์ตี้หลายรายการ
id<GAITracker> t1 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-1"]; // Trackers may be named. By default, name is set to the property ID. id<GAITracker> t2 = [[GAI sharedInstance] trackerWithName:@"altTracker" trackingId:@"UA-XXXX-2"]; [t1 set:kGAIScreenName value:@"Home Screen"]; [t2 set:kGAIScreenName value:NSStringFromClass([self class])]; // Send a screenview to UA-XXXX-1. // [t1 send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [t1 send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up. // Send a screenview to UA-XXXX-2. // [t2 send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions. [t2 send:[[GAIDictionaryBuilder createScreenView] build]]; // SDK Version 3.08 and up.
ฟีเจอร์การวัดผลอัตโนมัติ เช่น หน้าจออัตโนมัติและการวัดข้อยกเว้นที่ไม่ถูกตรวจจับ จะใช้เครื่องมือติดตามเพียงรายการเดียวเพื่อส่งข้อมูลไปยัง Google Analytics หากคุณใช้ฟีเจอร์เหล่านี้และต้องการส่งข้อมูลด้วยเครื่องมือติดตามอื่นๆ คุณต้องดำเนินการด้วยตนเอง
การวัดหน้าจออัตโนมัติจะใช้อุปกรณ์ติดตามที่ระบุไว้ในพร็อพเพอร์ตี้ tracker
ของ GAITrackedViewController
ที่กำหนดเพื่อใช้อ้างอิง
การวัดข้อยกเว้นที่ตรวจไม่พบจะใช้เครื่องมือติดตามเริ่มต้นที่ระบุไว้ในอินสแตนซ์ GAI
การใช้เครื่องมือติดตามเริ่มต้น
Google Analytics รักษาตัวติดตามเริ่มต้น อุปกรณ์ติดตามแรกที่เริ่มใช้งานจะกลายเป็นเครื่องมือติดตามเริ่มต้น แต่อาจถูกลบล้าง
// t1 becomes the default tracker because it is the first tracker initialized. id<GAITracker> t1 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-1"]; id<GAITracker> t2 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-2"]; // Returns t1. id<GAITracker> defaultTracker = [[GAI sharedInstance] defaultTracker]; // Hit sent to UA-XXXX-1. // Previous V3 SDK versions. // [defaultTracker send:[[[GAIDictionaryBuilder createAppView] // set:@"Home Screen" forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. [defaultTracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen" forKey:kGAIScreenName] build]]; // Override the default tracker. [[GAI sharedInstance] setDefaultTracker:t2]; // Returns t2. defaultTracker = [[GAI sharedInstance] defaultTracker]; // Hit sent to UA-XXXX-2. // Previous V3 SDK versions. // [defaultTracker send:[[[GAIDictionaryBuilder createAppView] // set:NSStringFromClass([self class]) // forKey:kGAIScreenName] build]]; // SDK Version 3.08 and up. [defaultTracker send:[[[GAIDictionaryBuilder createScreenView] set:NSStringFromClass([self class]) forKey:kGAIScreenName] build]];
ทดสอบผลิตภัณฑ์
คุณสามารถเปิดใช้การสุ่มตัวอย่างฝั่งไคลเอ็นต์เพื่อจำกัดจำนวน Hit ที่ส่งไปยัง Google Analytics หากแอปมีผู้ใช้จำนวนมากหรือส่งข้อมูลปริมาณมากไปยัง Google Analytics การเปิดใช้การสุ่มตัวอย่างจะช่วยให้การรายงานไม่ขาดตอน
ตัวอย่างเช่น หากต้องการใช้การสุ่มตัวอย่างฝั่งไคลเอ็นต์ในอัตรา 50% ให้ใช้โค้ดต่อไปนี้
// Assumes a tracker has already been initialized with a property ID, otherwise // getDefaultTracker returns nil. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; // Set a sample rate of 50%. [tracker set:kGAISampleRate value:@"50.0"];
การเลือกไม่ใช้ระดับแอป
คุณสามารถเปิดใช้แฟล็กการเลือกไม่ใช้ระดับแอปซึ่งจะปิดใช้ Google Analytics ทั่วทั้งแอป โปรดทราบว่าต้องตั้งค่าแฟล็กนี้ทุกครั้งที่แอปเริ่มทำงาน และจะมีค่าเริ่มต้นเป็น NO
หากต้องการรับการตั้งค่าการเลือกไม่ใช้ระดับแอป ให้ใช้
// Get the app-level opt out preference. if ([GAI sharedInstance].optOut) { ... // Alert the user they have opted out. }
หากต้องการตั้งค่าการเลือกไม่ใช้ระดับแอป ให้ใช้ปุ่มต่อไปนี้
// Set the app-level opt out preference. [[GAI sharedInstance] setOptOut:YES];
ลบข้อมูลผู้ใช้ฝั่งไคลเอ็นต์
หากต้องการรีเซ็ตหรือลบข้อมูลฝั่งไคลเอ็นต์ Google Analytics ของผู้ใช้ปลายทาง คุณสามารถลบไฟล์ Google Analytics หรือตั้งรหัสไคลเอ็นต์ใหม่
ตัวเลือกที่ 1: ลบไฟล์ Google Analytics
หากแอปไม่ได้ตั้งค่ารหัสไคลเอ็นต์ให้กับผู้ใช้ปลายทางอย่างชัดเจน คุณจะบังคับให้สร้างรหัสไคลเอ็นต์ใหม่ได้โดยการลบไฟล์ Google Analytics ที่ใช้จัดเก็บรหัสไคลเอ็นต์
คุณใช้เมธอดตัวอย่างต่อไปนี้เพื่อลบไฟล์ Google Analytics ได้ วิธีการนี้ต้องมีการดำเนินการก่อนเริ่มต้น Google Analytics:
/* Execute this before [GAI sharedInstance] is initialized. */ static void DeleteGAFiles(void) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *libraryFiles = [fileManager contentsOfDirectoryAtPath:paths.firstObject error:nil]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self BEGINSWITH 'googleanalytics'"]; NSArray *matchingFileNames = [libraryFiles filteredArrayUsingPredicate:predicate]; for (NSString *fileName in matchingFileNames) { NSError *error; NSString *filePath = [paths.firstObject stringByAppendingPathComponent:fileName]; if (![fileManager removeItemAtPath:filePath error:&error]) { // Log error. } } }
ตัวเลือกที่ 2: ตั้งค่ารหัสไคลเอ็นต์ใหม่
คุณสามารถสร้างและตั้งค่ารหัสไคลเอ็นต์ที่ไม่ซ้ำใหม่ได้ Hit ที่ตามมาทั้งหมดจะใช้รหัสไคลเอ็นต์ใหม่ และข้อมูลก่อนหน้าจะไม่เชื่อมโยงกับรหัสไคลเอ็นต์ใหม่
เรียกใช้โค้ดต่อไปนี้เพื่อสร้างและตั้งค่ารหัสไคลเอ็นต์ใหม่
[GAI sharedInstance].optOut = YES; // This Id should be a valid UUID (version 4) string as described in https://goo.gl/0dlrGx. NSString *newClientID = [NSUUID UUID].UUIDString.lowercaseString; id dispatcher = [[GAI sharedInstance] performSelector:@selector(dispatcher)]; id dataStore = [dispatcher performSelector:@selector(dataStore)]; if ([dataStore respondsToSelector:@selector(setClientId:)]) { [dataStore performSelector:@selector(setClientId:) withObject:newClientID]; } [GAI sharedInstance].optOut = NO;
ทำให้ IP ไม่ระบุตัวตน
การเปิดใช้ฟังก์ชันการลบข้อมูลระบุตัวบุคคลของ IP จะบอกให้ Google Analytics ลบข้อมูล IP ที่ SDK ส่งให้โดยลบอ็อกเท็ตสุดท้ายของที่อยู่ IP ก่อนพื้นที่เก็บข้อมูล
ตัวอย่างต่อไปนี้แสดงวิธีenableฟังก์ชันการลบข้อมูลระบุตัวบุคคลของ IP สำหรับเครื่องมือติดตาม
[tracker set:kGAIAnonymizeIp value:@"1"];
ทั้งนี้ คุณสามารถตั้งค่าฟังก์ชันการลบข้อมูลระบุตัวบุคคลของ IP ได้ทุกเมื่อ
การทดสอบและการแก้ไขข้อบกพร่อง
Google Analytics SDK สำหรับ iOS มีเครื่องมือที่ช่วยให้การทดสอบและแก้ไขข้อบกพร่องง่ายขึ้น
ทดลองเรียกใช้
SDK ให้แฟล็ก dryRun
ซึ่งเมื่อตั้งค่าแล้วจะป้องกันไม่ให้มีการส่งข้อมูลใดๆ ไปยัง Google Analytics คุณควรตั้งค่าแฟล็ก dryRun
เมื่อคุณทดสอบหรือแก้ไขข้อบกพร่องของการติดตั้งใช้งาน และไม่ต้องการให้ข้อมูลการทดสอบปรากฏในรายงาน Google Analytics
วิธีตั้งค่าสถานะการทดลองเรียกใช้
[[GAI sharedInstance] setDryRun:YES];
เครื่องบันทึก
โปรโตคอล GAILogger
มีไว้เพื่อจัดการข้อความที่เป็นประโยชน์จาก SDK ที่การพูดรายละเอียดในระดับต่อไปนี้: error
, warning
, info
และ verbose
SDK เริ่มต้นการใช้งาน Logger
มาตรฐาน ซึ่งโดยค่าเริ่มต้นจะบันทึกเฉพาะคําเตือนหรือข้อความแสดงข้อผิดพลาดไปยังคอนโซล วิธีตั้งค่าการพูดรายละเอียดของ Logger
// Set the log level to verbose. [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
นอกจากนี้คุณยังสามารถใช้การติดตั้งใช้งาน Logger
ที่กำหนดเองได้อีกด้วย
// Provide a custom logger. [[GAI sharedInstance].logger = [[CustomLogger alloc] init];
ตัวอย่างที่สมบูรณ์
ตัวอย่างด้านล่างแสดงโค้ดที่จำเป็นในการเริ่มต้นการติดตั้งใช้งาน Google Analytics และส่งการดูหน้าจอเดียว
ถัดไป ระบบจะวัดการดูหน้าจอเมื่อหน้าจอแรกแสดงให้ผู้ใช้เห็น ดังนี้
โดยปกติแล้ว การเริ่มติดตั้งใช้งานจะทำได้จากผู้รับมอบสิทธิ์แอป ดังตัวอย่างต่อไปนี้
// // AppDelegate.h // #import <UIKit/UIKit.h> #import "GAI.h" @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) id<GAITracker> tracker; @end // // AppDelegate.m // #import "AppDelegate.h" /** Google Analytics configuration constants **/ static NSString *const kGaPropertyId = @"UA-XXXX-Y"; // Placeholder property ID. static NSString *const kTrackingPreferenceKey = @"allowTracking"; static BOOL const kGaDryRun = NO; static int const kGaDispatchPeriod = 30; @interface AppDelegate () - (void)initializeGoogleAnalytics; @end @implementation AppDelegate - (void)applicationDidBecomeActive:(UIApplication *)application { [GAI sharedInstance].optOut = ![[NSUserDefaults standardUserDefaults] boolForKey:kTrackingPreferenceKey]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Do other work for customization after application launch // then initialize Google Analytics. [self initializeGoogleAnalytics]; return YES; } - (void)initializeGoogleAnalytics { [[GAI sharedInstance] setDispatchInterval:kGaDispatchPeriod]; [[GAI sharedInstance] setDryRun:kGaDryRun]; self.tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId]; } // The rest of the app delegate code omitted. @end
จากนั้น หากต้องการวัดการดูหน้าจอเมื่อการดูแสดงต่อผู้ใช้ ให้ทําดังนี้
// // MyViewController.m // #import "MyViewController.h" #import "AppDelegate.h" #import "GAI.h" #import "GAIFields.h" #import "GAITracker.h" #import "GAIDictionaryBuilder.h" @implementation MyViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // This screen name value will remain set on the tracker and sent with // hits until it is set to a new value or to nil. [[GAI sharedInstance].defaultTracker set:kGAIScreenName value:@"Home Screen"]; // Send the screen view. // Previous V3 SDK versions. // [[GAI sharedInstance].defaultTracker // send:[[GAIDictionaryBuilder createAppView] build]]; // SDK Version 3.08 and up. [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createScreenView] build]]; }