เอกสารนี้จะอธิบายวิธีการจัดการข้อมูล การส่งไปยัง Google Analytics โดยใช้ Google Analytics SDK สำหรับ iOS v3
ภาพรวม
ข้อมูลที่รวบรวมโดยใช้ Google Analytics SDK สำหรับ iOS จะจัดเก็บอยู่ภายในเครื่องก่อนที่จะส่งไปยังเทรดแยกต่างหากไปยัง Google Analytics
ระบบจะส่งและรับข้อมูลภายในเวลา 4.00 น. ของวันถัดไปในเขตเวลาท้องถิ่นของข้อมูลพร็อพเพอร์ตี้แต่ละรายการ ข้อมูลที่ได้รับหลังจากนั้นจะไม่ปรากฏในรายงาน ตัวอย่างเช่น หาก Hit อยู่ในคิวในเครื่องในเวลา 23:59 น. Hit จะต้องส่งภายใน 4 ชั่วโมงภายในเวลา 3:59 น. เพื่อให้ปรากฏในรายงาน ในทางกลับกัน Hit ที่เข้าคิวในเวลา 00:00 น. จะต้องส่งภายใน 28 ชั่วโมง กล่าวคือ 3:59 น. ของวันถัดไปเพื่อให้ปรากฏในรายงาน
การจ่ายงานเป็นระยะๆ
โดยค่าเริ่มต้น ระบบจะส่งข้อมูลจาก Google Analytics SDK สำหรับ iOS ทุก 2 นาที
// Set the dispatch interval in seconds. // 2 minutes (120 seconds) is the default value. [GAI sharedInstance].dispatchInterval = 120;
การตั้งค่าติดลบจะปิดใช้การจัดส่งตามระยะเวลา ซึ่งกำหนดให้คุณต้องใช้การจัดส่งด้วยตนเองหากต้องการส่งข้อมูลไปยัง Google Analytics
// Disable periodic dispatch by setting dispatch interval to a value less than 1. [GAI sharedInstance].dispatchInterval = 0;
หากผู้ใช้สูญเสียสิทธิ์เข้าถึงเครือข่ายหรือออกจากแอปในขณะที่ยังมี Hit ที่รอการส่งอยู่ Hit เหล่านั้นจะยังคงอยู่ในพื้นที่เก็บข้อมูลในเครื่อง เราจะจัดส่งอุปกรณ์ให้คุณในครั้งต่อไปที่แอปทำงานและมีการเรียกการจัดส่ง
การจ่ายงานด้วยตนเอง
หากต้องการส่ง Hit ด้วยตนเอง เช่น เมื่อคุณทราบว่ามีการใช้วิทยุของอุปกรณ์เพื่อส่งข้อมูลอื่นๆ ไปแล้ว ให้ทำดังนี้
[[GAI sharedInstance] dispatch];
การจ่ายงานในพื้นหลัง
วิธีเปิดใช้การส่งงานในเบื้องหลังในแอป iOS
- เพิ่มพร็อพเพอร์ตี้สำหรับ
dispatchHandler
- ใช้เมธอด
sendHitsInBackground
-
ลบล้างเมธอด
applicationDidEnterBackground
- ลบล้างเมธอด
applicationWillEnterForeground
เพิ่มพร็อพเพอร์ตี้สำหรับ dispatchHandler
ในไฟล์การใช้งาน (AppDelegate.m
) ของคลาส AppDelegate
ให้เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ก่อน @implementation AppDelegate
@interface AppDelegate () @property(nonatomic, copy) void (^dispatchHandler)(GAIDispatchResult result); @end @implementation AppDelegate // ...
ใช้เมธอด sendHitsInBackground
ในคลาส AppDelegate
ให้ใช้เมธอด sendHitsInBackground
เพื่อส่ง Hit เมื่อแอปทำงานอยู่เบื้องหลัง ดังนี้
// This method sends any queued hits when the app enters the background. - (void)sendHitsInBackground { __block BOOL taskExpired = NO; __block UIBackgroundTaskIdentifier taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ taskExpired = YES; }]; if (taskId == UIBackgroundTaskInvalid) { return; } __weak AppDelegate *weakSelf = self; self.dispatchHandler = ^(GAIDispatchResult result) { // Send hits until no hits are left, a dispatch error occurs, or // the background task expires. if (result == kGAIDispatchGood && !taskExpired) { [[GAI sharedInstance] dispatchWithCompletionHandler:weakSelf.dispatchHandler]; } else { [[UIApplication sharedApplication] endBackgroundTask:taskId]; } }; [[GAI sharedInstance] dispatchWithCompletionHandler:self.dispatchHandler]; }
เมธอด dispatchWithCompletionHandler
จะใช้การบล็อกการเสร็จสมบูรณ์เป็นพารามิเตอร์และเรียกใช้การบล็อกการเสร็จสมบูรณ์ทุกครั้งที่คำขอที่มีบีคอนของ Google Analytics อย่างน้อย 1 รายการเสร็จสมบูรณ์
โดยจะแสดงผลลัพธ์ที่ระบุว่ามีข้อมูลที่ต้องส่งเพิ่มเติมหรือไม่ และ/หรือระบุว่าคำขอล่าสุดสำเร็จหรือไม่ วิธีนี้จะทำให้คุณจัดการบีคอนได้อย่างมีประสิทธิภาพเมื่อแอปทำงานในเบื้องหลัง
ลบล้างเมธอด applicationDidEnterBackground
ลบล้างเมธอด applicationDidEnterBackground
ในคลาส AppDelegate
เพื่อเรียกใช้เมธอด sendHitsInBackground
ซึ่งจะส่ง Hit เมื่อแอปเข้าสู่เบื้องหลัง
- (void)applicationDidEnterBackground:(UIApplication *)application { [self sendHitsInBackground]; }
ลบล้างเมธอด applicationWillEnterForeground
ลบล้างเมธอด applicationWillEnterForeground
ในคลาส AppDelegate
เพื่อคืนค่าช่วงเวลาการจัดส่ง เช่น
- (void)applicationWillEnterForeground:(UIApplication *)application { // Restores the dispatch interval because dispatchWithCompletionHandler // has disabled automatic dispatching. [GAI sharedInstance].dispatchInterval = 120; }