Bu dokümanda, iOS SDK'nın eski bir sürümü açıklanmaktadır. Analytics'te yeniyseniz en son SDK'yı kullanın. Daha fazla bilgi

Gönderim - iOS SDK

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