Bu dokümanda, iOS v3 için Google Analytics SDK'sını kullanarak Google Analytics'e veri gönderimini nasıl yönetebileceğiniz açıklanmaktadır.
Genel bakış
iOS için Google Analytics SDK kullanılarak toplanan veriler, Google Analytics'e ayrı bir ileti dizisinde gönderilmeden önce yerel olarak depolanır.
Veriler, her görünümün yerel saat diliminde ertesi gün 04:00'a kadar gönderilmelidir ve alınır. Bundan sonra alınan veriler raporlarda görünmez. Örneğin, bir isabet yerel olarak saat 23:59'da sıraya alınırsa raporlarda görünmesi için 4 saat içinde 03:59'a kadar gönderilmelidir. Öte yandan, 12:00'de sıraya alınan bir isabetin 28 saat içinde gönderilmesi gerekir (yani Raporlarda gösterilmesi için ertesi gün 03:59'u.
Periyodik gönderim
Varsayılan olarak, veriler 2 dakikada bir iOS için Google Analytics SDK'sından gönderilir.
// Set the dispatch interval in seconds. // 2 minutes (120 seconds) is the default value. [GAI sharedInstance].dispatchInterval = 120;
Negatif değer ayarlamak, düzenli gönderimi devre dışı bırakır. Bu nedenle, Google Analytics'e veri göndermek istiyorsanız manuel gönderimi kullanmanız gerekir.
// Disable periodic dispatch by setting dispatch interval to a value less than 1. [GAI sharedInstance].dispatchInterval = 0;
Bir kullanıcı, ağ erişimini kaybederse veya gönderilmeyi bekleyen isabetler varken uygulamanızdan çıkarsa bu isabetler yerel depolama alanında kalır. Bunlar, uygulamanız tekrar çalıştırılıp dağıtıldığında gönderilir.
Manuel gönderme
İsabetleri manuel olarak göndermek için (örneğin, başka verileri göndermek için cihaz radyosunun zaten kullanıldığını bilirseniz):
[[GAI sharedInstance] dispatch];
Arka planda gönderme
iOS uygulamalarında arka planda göndermeyi etkinleştirmek için:
dispatchHandler
için bir özellik ekleyin.sendHitsInBackground
yöntemini uygulayın.applicationDidEnterBackground
yöntemini geçersiz kılın.applicationWillEnterForeground
yöntemini geçersiz kılın.
dispatchHandler
için bir mülk ekleyin
AppDelegate
sınıfının uygulama dosyasına (AppDelegate.m
) @implementation AppDelegate
özelliğini eklemeden önce aşağıdaki özelliği ekleyin:
@interface AppDelegate () @property(nonatomic, copy) void (^dispatchHandler)(GAIDispatchResult result); @end @implementation AppDelegate // ...
sendHitsInBackground
yöntemini uygulayın
AppDelegate
sınıfında, uygulama arka plana geçtiğinde isabet göndermek için sendHitsInBackground
yöntemini uygulayı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]; }
dispatchWithCompletionHandler
yöntemi, bir parametre olarak tamamlama bloğu alır ve bir veya daha fazla Google Analytics işaretçisi içeren istek her tamamlandığında bu bloku çağırır.
Gönderilecek daha fazla veri olup olmadığını ve/veya son isteğin başarılı olup olmadığını gösteren bir sonuç döndürür. Bu yöntemle, uygulama arka plana geçtiğinde işaretçileri etkili bir şekilde yönetebilirsiniz.
applicationDidEnterBackground
yöntemini geçersiz kılma
Uygulama arka plana girdiğinde isabet gönderen sendHitsInBackground
yöntemini çağırmak için AppDelegate
sınıfındaki applicationDidEnterBackground
yöntemini geçersiz kılın:
- (void)applicationDidEnterBackground:(UIApplication *)application { [self sendHitsInBackground]; }
applicationWillEnterForeground
yöntemini geçersiz kılma
Gönderim aralığını geri yüklemek için AppDelegate
sınıfında applicationWillEnterForeground
yöntemini geçersiz kılın. Örneğin:
- (void)applicationWillEnterForeground:(UIApplication *)application { // Restores the dispatch interval because dispatchWithCompletionHandler // has disabled automatic dispatching. [GAI sharedInstance].dispatchInterval = 120; }