Gönderme - iOS SDK

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

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;
}