Tài liệu này mô tả cách bạn có thể quản lý việc gửi dữ liệu đến Google Analytics bằng Google Analytics SDK dành cho iOS phiên bản 3.
Tổng quan
Dữ liệu thu thập được bằng Google Analytics SDK dành cho iOS được lưu trữ trên máy trước khi được gửi đến một chuỗi riêng đến Google Analytics.
Dữ liệu phải được gửi và nhận muộn nhất vào 4 giờ sáng ngày hôm sau theo múi giờ địa phương của mỗi chế độ xem. Mọi dữ liệu nhận được sau đó sẽ không xuất hiện trong các báo cáo. Ví dụ: nếu một lượt truy cập được đưa vào hàng đợi cục bộ vào lúc 11:59 đêm, thì lượt truy cập đó phải được gửi đi trong vòng 4 giờ trước 3:59 sáng để xuất hiện trong báo cáo. Mặt khác, một lượt truy cập vào hàng đợi lúc 12:00 sáng phải được gửi trong vòng 28 giờ, tức là 3:59 sáng ngày hôm sau để xuất hiện trong báo cáo.
Gửi thư định kỳ
Theo mặc định, cứ 2 phút một lần dữ liệu sẽ được gửi từ SDK Google Analytics dành cho iOS.
// Set the dispatch interval in seconds. // 2 minutes (120 seconds) is the default value. [GAI sharedInstance].dispatchInterval = 120;
Việc đặt giá trị âm sẽ tắt chế độ gửi định kỳ, yêu cầu bạn phải sử dụng tính năng gửi thủ công nếu muốn gửi bất kỳ dữ liệu nào đến Google Analytics.
// Disable periodic dispatch by setting dispatch interval to a value less than 1. [GAI sharedInstance].dispatchInterval = 0;
Nếu người dùng mất quyền truy cập mạng hoặc thoát khỏi ứng dụng của bạn trong khi vẫn còn các lượt truy cập đang chờ gửi, thì những lượt truy cập đó sẽ được giữ lại trong bộ nhớ cục bộ. Chúng sẽ được gửi vào lần tiếp theo ứng dụng của bạn chạy và điều phối được gọi.
Điều phối thủ công
Để gửi lượt truy cập theo cách thủ công, chẳng hạn như khi bạn biết đài phát của thiết bị đã được dùng để gửi dữ liệu khác:
[[GAI sharedInstance] dispatch];
Gửi thư ở chế độ nền
Cách bật tính năng điều phối ở chế độ nền trên các ứng dụng iOS:
- Thêm một thuộc tính cho
dispatchHandler
. - Triển khai phương thức
sendHitsInBackground
. -
Ghi đè phương thức
applicationDidEnterBackground
. - Ghi đè phương thức
applicationWillEnterForeground
.
Thêm một thuộc tính cho dispatchHandler
Trong tệp triển khai (AppDelegate.m
) của lớp AppDelegate
, hãy thêm thuộc tính sau trước @implementation AppDelegate
:
@interface AppDelegate () @property(nonatomic, copy) void (^dispatchHandler)(GAIDispatchResult result); @end @implementation AppDelegate // ...
Triển khai phương thức
sendHitsInBackground
Trong lớp AppDelegate
, hãy triển khai phương thức sendHitsInBackground
để gửi lượt truy cập khi ứng dụng chuyển sang chạy ở chế độ nền:
// 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]; }
Phương thức dispatchWithCompletionHandler
lấy khối hoàn thành
làm thông số và gọi khối hoàn thành đó mỗi khi hoàn tất một yêu cầu
chứa một hoặc nhiều beacon Google Analytics.
Phương thức này trả về một kết quả cho biết liệu có thêm dữ liệu cần gửi hay không và/hoặc liệu yêu cầu gần đây nhất có thành công hay không. Với phương thức này, bạn có thể quản lý các beacon điều phối một cách hiệu quả khi ứng dụng chuyển sang chạy ở chế độ nền.
Ghi đè phương thức applicationDidEnterBackground
Ghi đè phương thức applicationDidEnterBackground
trên lớp AppDelegate
để gọi phương thức sendHitsInBackground
. Phương thức này sẽ gửi lượt truy cập khi ứng dụng chuyển sang chạy ở chế độ nền:
- (void)applicationDidEnterBackground:(UIApplication *)application { [self sendHitsInBackground]; }
Ghi đè phương thức applicationWillEnterForeground
Ghi đè phương thức applicationWillEnterForeground
trên lớp AppDelegate
để khôi phục khoảng thời gian điều phối. Ví dụ:
- (void)applicationWillEnterForeground:(UIApplication *)application { // Restores the dispatch interval because dispatchWithCompletionHandler // has disabled automatic dispatching. [GAI sharedInstance].dispatchInterval = 120; }