Bu dokümanda, iOS v3 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 global yapılandırma değerleri için arayüz işlevi gören
GAI
teklisi sağlar.
Başlatma
Verilerin ölçülebilmesi için izleyici adı ve Google Analytics mülk kimliği sağlayarak GoogleAnalytics
tek başına 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, izleyicideki parametre-değer çiftlerinin eşlemeleri ayarlanıp set
ve send
yöntemleri aracılığıyla göndererek 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 alanı 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 Ampers ve Söz Dizimi
Değerler, Measurement Protocol ve"söz dizimi"kullanılarak, tek bir isabette, Builder
üzerinde bir değer ayarlayarak veya sonraki tüm isabetlerde, izleyici nesnesinin üzerinde de ayarlanabilir.
// 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ı'na bakın.
Birden Çok İsabete Değer Uygulama
İzleyicide doğrudan ayarlanan 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 çok isabette kalmasını istediğiniz değerler doğrudan izleyicide ayarlanmalıdır. Sonraki ekran görüntülenme ve etkinlik isabetlerine aynı değer uygulanabileceği için izleyicide ekran adı ayarlamak mantıklıdır. Ancak izleyicide isabet türü gibi bir alan ayarlamanız önerilmez. Çünkü bu değer, her isabetle birlikte değişir.
Birden Çok İzleyici Kullanma
Tek bir uygulamada birden fazla izleyici kullanılabilir. Bu, birden fazla mülke veri göndermek için yararlı 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 izleyiciler aracılığıyla veri göndermek istiyorsanız bunu manuel olarak yapmanız gerekir.
Referans olarak, otomatik ekran ölçümü belirli bir GAITrackedViewController
için tracker
özelliğinde belirtilen izleyiciyi kullanır.
Yakalanmamış istisna ölçümü, GAI
örneğinizde belirtilen varsayılan izleyiciyi kullanır.
Varsayılan izleyiciyi kullanma
Google Analytics varsayılan bir izleyici sağlar. Başlatılan ilk izleyici varsayılan izleyici olur 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]];
Örnekleme
Google Analytics'e gönderilen isabet sayısını sınırlamak için istemci taraflı örneklemeyi etkinleştirebilirsiniz. Uygulamanız çok sayıda kullanıcıya sahipse veya Google Analytics'e büyük miktarda veri gönderiyorsa örneklemenin etkinleştirilmesi kesintiye uğramadan raporlama yapılmasına yardımcı olur.
Örneğin, istemci tarafı örneklemeyi %50 oranında 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 Kapsam Dışında Kalma
Google Analytics'i uygulamanın tamamında devre dışı bırakacak uygulama düzeyinde bir
devre dışı bırakma işaretini etkinleştirebilirsiniz. Uygulama her başladığında bu işaretin ayarlanması
ve varsayılan olarak NO
ayarının ayarlanması gerektiğini unutmayın.
Uygulama düzeyinde kapsam dışında kalma ayarını almak için şunu kullanın:
// Get the app-level opt out preference. if ([GAI sharedInstance].optOut) { ... // Alert the user they have opted out. }
Uygulama düzeyinde kapsam dışında kalmayı ayarlamak için şunu kullanın:
// Set the app-level opt out preference. [[GAI sharedInstance] setOptOut:YES];
İstemci tarafı kullanıcı verilerini silme
Son kullanıcılarınız için Google Analytics istemci tarafı verilerini sıfırlamanız veya silmeniz gerekiyorsa Google Analytics dosyalarını silebilir ya da yeni bir İstemci Kimliği ayarlayabilirsiniz.
1. Seçenek: Google Analytics dosyalarını silme
Uygulamanız bir son kullanıcı için İstemci Kimliği'ni açık bir şekilde ayarlamazsa İstemci Kimliği'ni depolamak için kullanılan Google Analytics dosyalarını silerek yeni bir Müşteri Kimliği oluşturmayı zorunlu kılabilirsiniz.
Google Analytics dosyalarını silmek için aşağıdaki örnek yöntem 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 ayarlayın
Yeni bir benzersiz müşteri kimliği oluşturup ayarlayabilirsiniz. Sonraki tüm isabetler yeni Client-ID'yi kullanır ve önceki veriler yeni Client-ID ile ilişkilendirilmez.
Yeni bir istemci kimliği oluşturmak ve ayarlamak için aşağıdaki kodu çalıştırı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 işlevini anonimleştirme özelliği Google Analytics'e, SDK tarafından gönderilen IP bilgilerini, IP adresi deposundan önceki son sekizliğini kaldırarak anonimleştirmesini söyler.
Aşağıdaki örnekte, bir izleyici için anonimleştirme IP işlevinin nasıl etkinleştirileceği 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. Bir uygulamayı test ettiğiniz veya hatalarını ayıkladığınız ve test verilerinin Google Analytics raporlarınızda görünmesini istemediğiniz durumlarda dryRun
işaretinin ayarlanması gerekir.
Prova işaretini ayarlamak için:
[[GAI sharedInstance] setDryRun:YES];
Logger
SDK'dan alınan faydalı mesajları şu ayrıntı düzeylerinde işlemek için GAILogger
protokolü sağlanır: error
, warning
, info
ve verbose
.
SDK varsayılan olarak yalnızca uyarı veya hata mesajlarını konsola kaydedecek standart bir Logger
uygulaması başlatır. Logger
ayrıntı düzeyini ayarlamak için:
// Set the log level to verbose. [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];
Logger
için özel uygulamalar da kullanılabilir:
// Provide a custom logger. [[GAI sharedInstance].logger = [[CustomLogger alloc] init];
Tam Örnek
Aşağıdaki örnekte, bir Google Analytics uygulamasını başlatmak ve tek bir ekran görüntüsü göndermek için gereken kod gösterilmektedir.
Daha sonra, bir ekran ilk kez kullanıcıya gösterildiğinde ekran görüntülenme ölçümü ölçülür:
Bir uygulamanın başlatılması, genellikle aşağıdaki örnekte olduğu gibi uygulama yetkilisinden 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
Ardından, bir görünüm kullanıcılara gösterildiğinde ekran görünümünü ö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]]; }