Bu dokümanda, iOS sürüm 3 için Google Analytics SDK'sını kullanarak Google Analytics'e dağıtım verilerini nasıl yönetebileceğiniz açıklanmaktadır.
Genel bakış
iOS için Google Analytics SDK'sı kullanılarak toplanan veriler, Google Analytics'e ayrı bir iş parçacığında gönderilmeden önce yerel olarak depolanır.
Veriler, her görünümün yerel saat dilimine göre ertesi gün 4:00'a kadar dağıtılmalı ve alınmalıdır. Bundan sonra alınan veriler raporlarda görünmez. Örneğin, bir isabet saat 23:59'da yerel olarak sıraya alındıysa raporlarda görünmesi için 4 saat içinde (03:59) gönderilmesi gerekir. Diğer yandan, saat 00:00'da sıraya alınan bir isabetin 28 saat içinde gönderilmesi gerekir. Yani, Raporlarda görünmesi için ertesi gün saat 03:59.
Periyodik dağıtım
Varsayılan olarak, veriler iOS için Google Analytics SDK'sından 2 dakikada bir gönderilir.
// Set the dispatch interval in seconds. // 2 minutes (120 seconds) is the default value. [GAI sharedInstance].dispatchInterval = 120;
Negatif bir değer ayarlanırsa düzenli dağıtım devre dışı bırakılır ve Google Analytics'e veri göndermek istiyorsanız manuel dağıtım 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 dağıtılmasını bekleyen isabetler varken uygulamanızdan çıkarsa bu isabetler yerel depolama alanında saklanır. Uygulamanız tekrar çalıştırıldığında ve dağıtım çağrıldığında gönderilir.
Manuel dağıtım
Örneğin, cihaz radyosunun diğer verileri göndermek için kullanılmakta olduğunu bildiğiniz durumlarda, isabetleri manuel olarak dağıtmak için:
[[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 özellik ekleyin
AppDelegate
sınıfının uygulama dosyasında (AppDelegate.m
), @implementation AppDelegate
öğesinin önüne 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 gittiğ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 tamamlama blokunu parametre olarak alır ve bir veya daha fazla Google Analytics işaretçisi içeren bir istek her tamamlandığında bu tamamlama blokunu ç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 gittiğinde gönderme işaretçilerini etkili bir şekilde yönetebilirsiniz.
applicationDidEnterBackground
yöntemini geçersiz kıl
Uygulama arka plana gittiğinde isabet gönderen sendHitsInBackground
yöntemini çağırmak için AppDelegate
sınıfında applicationDidEnterBackground
yöntemini geçersiz kılın:
- (void)applicationDidEnterBackground:(UIApplication *)application { [self sendHitsInBackground]; }
applicationWillEnterForeground
yöntemini geçersiz kıl
Dağıtım 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; }