Gelişmiş Yapılandırma - iOS SDK

Bu belgede, iOS sürüm 3 için Google Analytics SDK'sının gelişmiş yapılandırma özelliklerinden bazılarına genel bir bakış sunulmaktadır.

Genel bakış

iOS için Google Analytics SDK'sı, verileri ayarlayıp Google Analytics'e göndermek için bir GAITracker sınıfı ve uygulamanızın genel yapılandırma değerleri için arayüz görevi gören bir GAI tekilliği sağlar.

Başlatma

Herhangi bir veri ölçülmeden önce, izleyici için bir ad ve Google Analytics mülk kimliği sağlayarak GoogleAnalytics teklisi aracılığıyla en az bir izleyiciyi başlatmanız gerekir:

// Initialize a tracker using a Google Analytics property ID.
[[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"];

Bu izleyici artık verileri ayarlamak ve Google Analytics'e göndermek için kullanılabilir.

Veri Ayarlama ve Gönderme

Veriler, izleyicide parametre-değer çiftlerinin haritaları ayarlanarak ve set ile send yöntemleriyle gönderilerek Google Analytics'e gönderilir:

/*
 * Send a screen view to Google Analytics by setting a map of parameter
 * values on the tracker and calling send.
 */

// Retrieve tracker with placeholder property ID.
id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"];

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"appview", kGAIHitType, @"Home Screen", kGAIScreenName, nil];
[tracker send:params];

GAIDictionaryBuilder sınıfı, isabet oluşturma sürecini basitleştirir ve çoğu kullanım durumu için önerilir. Burada, aynı ekran görünümünü daha az kod satırıyla gönderebiliriz:

// Previous V3 SDK versions.
// Sending the same screen view hit using [GAIDictionaryBuilder createAppView]
// [tracker send:[[[GAIDictionaryBuilder createAppView] set:@"Home Screen"
//                                                   forKey:kGAIScreenName] build]];

// SDK Version 3.08 and up.
// Sending the same screen view hit using [GAIDictionaryBuilder createScreenView]
[tracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen"
                                                     forKey:kGAIScreenName] build]];

Measurement Protocol Ve İşareti Söz Dizimi

Değerler, tek bir isabette, değeri bir Builder üzerinde ayarlanarak veya sonraki tüm isabetlerde Measurement Protocol ve söz dizimi kullanılarak izleyici nesnesine ayarlanarak yapılabilir:

// Sending the same screen view hit using ampersand syntax.
// Previous V3 SDK versions.
// [tracker send:[[[GAIDictionaryBuilder createAppView] set:@"Home Screen"
//                                                   forKey:kGAIScreenName] build]];

// SDK Version 3.08 and up.
[tracker send:[[[GAIDictionaryBuilder createScreenView] set:@"Home Screen"
                                                     forKey:kGAIScreenName] build]];

Mevcut Measurement Protocol parametrelerinin tam listesi için Measurement Protocol Parametre Referansı'nı inceleyin.

Değerleri Birden Çok İsabete Uygulama

Doğrudan izleyicide ayarlanan tüm değerler aşağıdaki örnekte olduğu gibi korunur ve birden fazla isabete uygulanır:

// May return nil if a tracker has not yet been initialized with
// a property ID.
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];

// Set screen name on the tracker to be sent with all hits.
[tracker set:kGAIScreenName
       value:@"Home Screen"];

// Send a screen view for "Home Screen".
// [tracker send:[[GAIDictionaryBuilder createAppView] build]];   // Previous V3 SDK versions.
[tracker send:[[GAIDictionaryBuilder createScreenView] build]];   // SDK Version 3.08 and up.

// This event will also be sent with &cd=Home%20Screen.
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"UX"
                                                      action:@"touch"
                                                       label:@"menuButton"
                                                       value:nil] build]];

// Clear the screen name field when we're done.
[tracker set:kGAIScreenName
       value:nil];

Yalnızca birden fazla isabette korumak istediğiniz değerler doğrudan izleyicide ayarlanmalıdır. Aynı değer sonraki ekran görüntüleme ve etkinlik isabetlerine de uygulanabildiğinden, izleyiciye bir ekran adı ayarlamak mantıklıdır. Bununla birlikte, izleyicide isabet türü gibi bir alanın ayarlanması önerilmez. Çünkü bu alan, her isabetle değişebilir.

Birden Çok İzleyici Kullanma

Tek bir uygulamada birden fazla izleyici kullanılabilir. Bu da birden fazla mülke veri göndermek için faydalı olabilir:

id<GAITracker> t1 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-1"];

// Trackers may be named. By default, name is set to the property ID.
id<GAITracker> t2 = [[GAI sharedInstance] trackerWithName:@"altTracker"
                                                     trackingId:@"UA-XXXX-2"];

[t1 set:kGAIScreenName
        value:@"Home Screen"];

[t2 set:kGAIScreenName
        value:NSStringFromClass([self class])];

// Send a screenview to UA-XXXX-1.
// [t1 send:[[GAIDictionaryBuilder createAppView] build]];   // Previous V3 SDK versions.
[t1 send:[[GAIDictionaryBuilder createScreenView] build]];   // SDK Version 3.08 and up.

// Send a screenview to UA-XXXX-2.
// [t2 send:[[GAIDictionaryBuilder createAppView] build]];   // Previous V3 SDK versions.
[t2 send:[[GAIDictionaryBuilder createScreenView] build]];   // SDK Version 3.08 and up.

Otomatik ekran ve yakalanmamış istisna ölçümü gibi otomatik ölçüm özellikleri, Google Analytics'e veri göndermek için yalnızca bir izleyici kullanır. Bu özellikleri kullanıyor ve diğer takip cihazlarını kullanarak veri göndermek istiyorsanız bunu manuel olarak yapmanız gerekir.

Otomatik ekran ölçümü, belirli bir GAITrackedViewController öğesinin tracker özelliğinde belirtilen izleyiciyi referans amacıyla kullanır. Yakalanmamış istisna ölçümü, GAI örneğinizde belirtilen varsayılan izleyiciyi kullanır.

Varsayılan İzleyiciyi Kullanma

Google Analytics'te varsayılan bir izleyici bulunur. Başlatılan ilk izleyici varsayılan izleyici haline gelir ancak geçersiz kılınabilir:

// t1 becomes the default tracker because it is the first tracker initialized.
id<GAITracker> t1 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-1"];

id<GAITracker> t2 = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-2"];

// Returns t1.
id<GAITracker> defaultTracker = [[GAI sharedInstance] defaultTracker];

// Hit sent to UA-XXXX-1.
// Previous V3 SDK versions.
// [defaultTracker send:[[[GAIDictionaryBuilder createAppView]
//                 set:@"Home Screen" forKey:kGAIScreenName] build]];

// SDK Version 3.08 and up.
[defaultTracker send:[[[GAIDictionaryBuilder createScreenView]
                set:@"Home Screen" forKey:kGAIScreenName] build]];

// Override the default tracker.
[[GAI sharedInstance] setDefaultTracker:t2];

// Returns t2.
defaultTracker = [[GAI sharedInstance] defaultTracker];

// Hit sent to UA-XXXX-2.
// Previous V3 SDK versions.
// [defaultTracker send:[[[GAIDictionaryBuilder createAppView]
//                        set:NSStringFromClass([self class])
//                     forKey:kGAIScreenName] build]];

// SDK Version 3.08 and up.
[defaultTracker send:[[[GAIDictionaryBuilder createScreenView]
                       set:NSStringFromClass([self class])
                    forKey:kGAIScreenName] build]];

Örneklendirme

Google Analytics'e gönderilen isabetlerin sayısını sınırlamak için istemci tarafı örneklemeyi etkinleştirebilirsiniz. Uygulamanızın çok sayıda kullanıcısı varsa veya Google Analytics'e çok fazla veri gönderiyorsa örneklemeyi etkinleştirmek kesintisiz raporlamaya yardımcı olur.

Örneğin, %50 oranında istemci tarafı örnekleme uygulamak için aşağıdaki kodu kullanın:

// Assumes a tracker has already been initialized with a property ID, otherwise
// getDefaultTracker returns nil.
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];

// Set a sample rate of 50%.
[tracker set:kGAISampleRate value:@"50.0"];

Uygulama Düzeyinde Devre Dışı Bırakma

Google Analytics'i uygulamanın tamamında devre dışı bırakacak uygulama düzeyinde bir devre dışı bırakma işaretini etkinleştirebilirsiniz. Bu işaretin, uygulama her başlatıldığında ayarlanması gerektiğini ve varsayılan olarak NO olacağını unutmayın.

Uygulama düzeyinde devre dışı bırakma ayarını edinmek için şunları kullanın:

// Get the app-level opt out preference.
if ([GAI sharedInstance].optOut) {
  ... // Alert the user they have opted out.
}

Uygulama düzeyinde devre dışı bırakma işlemini ayarlamak için şunları kullanın:

// Set the app-level opt out preference.
[[GAI sharedInstance] setOptOut:YES];

İstemci taraflı kullanıcı verilerini silme

Son kullanıcılarınıza ait Google Analytics istemci tarafı verilerini sıfırlamanız veya silmeniz gerekiyorsa, Google Analytics dosyalarını silebilir ya da yeni bir Client-ID belirleyebilirsiniz.

1. Seçenek: Google Analytics dosyalarını silin

Uygulamanız bir son kullanıcının İstemci Kimliği'ni açıkça belirtmiyorsa İstemci Kimliğini depolamak için kullanılan Google Analytics dosyalarını silerek yeni bir İstemci Kimliği oluşturulmasını zorunlu kılabilirsiniz.

Aşağıdaki örnek yöntem, Google Analytics dosyalarını silmek için kullanılabilir. Yöntem, Google Analytics başlatılmadan önce yürütülmelidir:

/* Execute this before [GAI sharedInstance] is initialized. */
static void DeleteGAFiles(void) {
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
  NSFileManager *fileManager = [NSFileManager defaultManager];
  NSArray *libraryFiles = [fileManager contentsOfDirectoryAtPath:paths.firstObject error:nil];

  NSPredicate *predicate =
      [NSPredicate predicateWithFormat:@"self BEGINSWITH 'googleanalytics'"];
  NSArray *matchingFileNames = [libraryFiles filteredArrayUsingPredicate:predicate];

  for (NSString *fileName in matchingFileNames) {
    NSError *error;
    NSString *filePath = [paths.firstObject stringByAppendingPathComponent:fileName];
    if (![fileManager removeItemAtPath:filePath error:&error]) {
      // Log error.
    }
  }
}

2. Seçenek: Yeni bir Müşteri Kimliği oluşturun

Yeni bir benzersiz Client-ID oluşturup ayarlayabilirsiniz. Sonraki tüm isabetler yeni Client-ID'yi kullanır ve önceki veriler yeni Client-ID ile ilişkilendirilmez.

Yeni bir Client-ID oluşturmak ve ayarlamak için aşağıdaki kodu yürütün:

[GAI sharedInstance].optOut = YES;

// This Id should be a valid UUID (version 4) string as described in https://goo.gl/0dlrGx.
NSString *newClientID = [NSUUID UUID].UUIDString.lowercaseString;
id dispatcher = [[GAI sharedInstance] performSelector:@selector(dispatcher)];
id dataStore = [dispatcher performSelector:@selector(dataStore)];
if ([dataStore respondsToSelector:@selector(setClientId:)]) {
  [dataStore performSelector:@selector(setClientId:) withObject:newClientID];
}

[GAI sharedInstance].optOut = NO;

IP Anonimleştirme

IP anonimleştirme işlevinin etkinleştirilmesi, Google Analytics'e SDK tarafından gönderilen IP bilgilerini anonimleştirmesini bildirir. Bunun için, depolama yapılmadan önce IP adresinin son sekizliğini kaldırın.

Aşağıdaki örnekte, bir izleyici için IP anonimleştirme işlevinin nasıl enable gösterilmektedir:

[tracker set:kGAIAnonymizeIp value:@"1"];

IP anonimleştirme işlevini istediğiniz zaman ayarlayabilirsiniz.

Test ve Hata Ayıklama

iOS için Google Analytics SDK'sı, test ve hata ayıklamayı kolaylaştıran araçlar sunar.

Prova

SDK, ayarlandığında verilerin Google Analytics'e gönderilmesini engelleyen bir dryRun işareti sağlar. dryRun işareti, bir uygulamayı test ederken veya hata ayıklarken Google Analytics raporlarınızda test verilerinin görünmesini istemediğinizde ayarlanmalıdır.

Prova işaretini ayarlamak için:

[[GAI sharedInstance] setDryRun:YES];

Logger

GAILogger protokolü, SDK'dan gelen faydalı mesajları şu ayrıntı düzeylerinde işlemek için sağlanmıştır: error, warning, info ve verbose.

SDK, standart bir Logger uygulaması başlatır. Bu uygulama varsayılan olarak konsola yalnızca uyarı veya hata mesajları kaydeder. Logger öğesinin ayrıntı düzeyini ayarlamak için:

// Set the log level to verbose.
[[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];

Logger özel uygulamaları da kullanılabilir:

// Provide a custom logger.
[[GAI sharedInstance].logger = [[CustomLogger alloc] init];

Eksiksiz Örnek

Aşağıdaki örnekte, bir Google Analytics uygulamasını başlatmak ve tek ekran görüntülemesi göndermek için gereken kod gösterilmektedir.

Daha sonra, kullanıcıya ilk ekran gösterildiğinde bir ekran görüntülenme ölçülür:

Bir uygulamanın başlatılması genellikle bu örnekte olduğu gibi, uygulamada yetki veren kişi tarafından yapılabilir:

//
//  AppDelegate.h
//
#import <UIKit/UIKit.h>
#import "GAI.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) id<GAITracker> tracker;

@end

//
//  AppDelegate.m
//
#import "AppDelegate.h"

/** Google Analytics configuration constants **/
static NSString *const kGaPropertyId = @"UA-XXXX-Y"; // Placeholder property ID.
static NSString *const kTrackingPreferenceKey = @"allowTracking";
static BOOL const kGaDryRun = NO;
static int const kGaDispatchPeriod = 30;

@interface AppDelegate ()

- (void)initializeGoogleAnalytics;

@end

@implementation AppDelegate
- (void)applicationDidBecomeActive:(UIApplication *)application {
    [GAI sharedInstance].optOut =
    ![[NSUserDefaults standardUserDefaults] boolForKey:kTrackingPreferenceKey];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Do other work for customization after application launch
    // then initialize Google Analytics.
    [self initializeGoogleAnalytics];

    return YES;
}

- (void)initializeGoogleAnalytics {

    [[GAI sharedInstance] setDispatchInterval:kGaDispatchPeriod];
    [[GAI sharedInstance] setDryRun:kGaDryRun];
    self.tracker = [[GAI sharedInstance] trackerWithTrackingId:kGaPropertyId];
}

// The rest of the app delegate code omitted.

@end

Daha sonra, kullanıcıya bir görüntüleme gösterildiğinde ekran görüntülenmeyi ölçmek için:

//
// MyViewController.m
//
#import "MyViewController.h"
#import "AppDelegate.h"
#import "GAI.h"
#import "GAIFields.h"
#import "GAITracker.h"
#import "GAIDictionaryBuilder.h"

@implementation MyViewController

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    // This screen name value will remain set on the tracker and sent with
    // hits until it is set to a new value or to nil.
    [[GAI sharedInstance].defaultTracker set:kGAIScreenName
                                       value:@"Home Screen"];

    // Send the screen view.
    // Previous V3 SDK versions.
    // [[GAI sharedInstance].defaultTracker
    //     send:[[GAIDictionaryBuilder createAppView] build]];

    // SDK Version 3.08 and up.
    [[GAI sharedInstance].defaultTracker
        send:[[GAIDictionaryBuilder createScreenView] build]];
}