Dispatching – iOS SDK

In diesem Dokument wird beschrieben, wie Sie die Weiterleitung von Daten an Google Analytics mithilfe des Google Analytics SDK für iOS Version 3 verwalten können.

Überblick

Mit dem Google Analytics SDK for iOS erfasste Daten werden lokal gespeichert, bevor sie in einem separaten Thread an Google Analytics weitergeleitet werden.

Daten müssen bis 4:00 Uhr des folgenden Tages in der jeweiligen lokalen Zeitzone der jeweiligen Ansicht gesendet und empfangen werden. Daten, die später eingehen, werden nicht in Berichten angezeigt. Wenn sich ein Treffer beispielsweise lokal um 23:59 Uhr in der Warteschlange befindet, muss er innerhalb von vier Stunden bis 3:59 Uhr gesendet werden, damit er in Berichten berücksichtigt wird. Ein Treffer, der um 0:00 Uhr in die Warteschlange gestellt wurde, muss hingegen innerhalb von 28 Stunden gesendet werden, d.h. 03:59 Uhr des Folgetags, damit sie in den Berichten erscheinen.

Regelmäßige Disposition

Standardmäßig werden Daten alle zwei Minuten vom Google Analytics SDK for iOS gesendet.

// Set the dispatch interval in seconds.
// 2 minutes (120 seconds) is the default value.
[GAI sharedInstance].dispatchInterval = 120;

Wenn Sie einen negativen Wert festlegen, wird die regelmäßige Weiterleitung deaktiviert. Wenn Sie Daten an Google Analytics senden möchten, müssen Sie die manuelle Weiterleitung verwenden.

// Disable periodic dispatch by setting dispatch interval to a value less than 1.
[GAI sharedInstance].dispatchInterval = 0;

Wenn ein Nutzer den Netzwerkzugriff verliert oder Ihre Anwendung schließt, während noch Treffer gesendet werden müssen, werden diese Treffer im lokalen Speicher beibehalten. Sie werden abgefertigt, wenn Ihre Anwendung das nächste Mal ausgeführt und die Weiterleitung aufgerufen wird.

Manuelle Weiterleitung

So können Sie Treffer manuell senden, z. B. wenn Sie wissen, dass die Gerätefunkschnittstelle bereits zum Senden anderer Daten verwendet wird:

[[GAI sharedInstance] dispatch];

Hintergrund-Weiterleitung

So aktivieren Sie die Hintergrundweiterleitung in iOS-Apps:

Attribut für dispatchHandler hinzufügen

Fügen Sie in der Implementierungsdatei (AppDelegate.m) der Klasse AppDelegate vor @implementation AppDelegate das folgende Attribut hinzu:

@interface AppDelegate ()
@property(nonatomic, copy) void (^dispatchHandler)(GAIDispatchResult result);
@end

@implementation AppDelegate
// ...

Methode sendHitsInBackground implementieren

Implementieren Sie in der Klasse AppDelegate die Methode sendHitsInBackground, damit Treffer gesendet werden, wenn die App in den Hintergrund versetzt wird:

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

Die Methode dispatchWithCompletionHandler verwendet einen Vervollständigungsblock als Parameter und ruft diesen jedes Mal auf, wenn eine Anfrage mit einem oder mehreren Google Analytics-Beacons ausgeführt wurde. Es wird ein Ergebnis zurückgegeben, das angibt, ob mehr Daten gesendet werden müssen und/oder ob die letzte Anfrage erfolgreich war. Mit dieser Methode können Sie das Versenden von Beacons effektiv verwalten, wenn die App in den Hintergrund versetzt wird.

Methode applicationDidEnterBackground überschreiben

Überschreiben Sie die Methode applicationDidEnterBackground in der Klasse AppDelegate, um die Methode sendHitsInBackground aufzurufen, die Treffer sendet, wenn die App in den Hintergrund versetzt wird:

- (void)applicationDidEnterBackground:(UIApplication *)application {
  [self sendHitsInBackground];
}

Methode applicationWillEnterForeground überschreiben

Überschreiben Sie die Methode applicationWillEnterForeground für die Klasse AppDelegate, um das Weiterleitungsintervall wiederherzustellen. Beispiel:

- (void)applicationWillEnterForeground:(UIApplication *)application {
  // Restores the dispatch interval because dispatchWithCompletionHandler
  // has disabled automatic dispatching.
  [GAI sharedInstance].dispatchInterval = 120;
}