बेहतर कॉन्फ़िगरेशन - iOS SDK टूल

इस दस्तावेज़ में iOS v3 के लिए Google Analytics SDK की कुछ उन्नत कॉन्फ़िगरेशन सुविधाओं का सारांश दिया गया है.

खास जानकारी

iOS के लिए Google Analytics SDK टूल, डेटा को सेट करने और Google Analytics को भेजने के लिए, GAITracker क्लास देता है. साथ ही, GAI सिंगलटन होता है, जो आपके लागू करने की ग्लोबल कॉन्फ़िगरेशन वैल्यू के लिए इंटरफ़ेस के तौर पर काम करता है.

डेटा लेयर में इवेंट बनाने की प्रोसेस

किसी भी डेटा को मेज़र करने से पहले, आपको GoogleAnalytics सिंगलटन से कम से कम एक ट्रैकर शुरू करना होगा. इसके लिए, आपको ट्रैकर को नाम और Google Analytics प्रॉपर्टी आईडी देना होगा:

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

अब इस ट्रैकर का इस्तेमाल, सेटिंग तय करने और Google Analytics को डेटा भेजने के लिए किया जा सकता है.

डेटा सेट करना और भेजना

Google Analytics को डेटा भेजने के लिए, ट्रैकर पर पैरामीटर-वैल्यू पेयर के मैप सेट करें. साथ ही, उन्हें set और send तरीकों की मदद से भेजें:

/*
 * 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 क्लास हिट बनाने की प्रोसेस को आसान बनाती है. साथ ही, इसका सुझाव ज़्यादातर मामलों में दिया जाता है. यहां हम कम कोड के साथ वही स्क्रीन व्यू भेज सकते हैं:

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

मेज़रमेंट प्रोटोकॉल एम्परसैंड सिंटैक्स

वैल्यू को किसी एक हिट पर भी सेट किया जा सकता है. इसके लिए, Builder या बाद के सभी हिट पर वैल्यू सेट करें. इसके लिए, मेज़रमेंट प्रोटोकॉल के एम्परसैंड सिंटैक्स का इस्तेमाल करके, वैल्यू को ट्रैकर ऑब्जेक्ट पर ही सेट करें:

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

उपलब्ध मेज़रमेंट प्रोटोकॉल पैरामीटर की पूरी सूची के लिए, मेज़रमेंट प्रोटोकॉल पैरामीटर रेफ़रंस देखें.

एक से ज़्यादा हिट पर वैल्यू लागू करना

ट्रैकर पर सीधे सेट की गई कोई भी वैल्यू बनी रहेगी और एक से ज़्यादा हिट पर लागू होगी, जैसा कि इस उदाहरण में दिखाया गया है:

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

सिर्फ़ वे वैल्यू, जिन्हें आप एक से ज़्यादा हिट में लागू करना चाहते हैं, सीधे ट्रैकर पर सेट की जानी चाहिए. ट्रैकर पर स्क्रीन का नाम सेट करना फ़ायदेमंद होगा, क्योंकि बाद के स्क्रीन व्यू और इवेंट हिट पर वही वैल्यू लागू की जा सकती है. हालांकि, ट्रैकर पर हिट टाइप जैसी फ़ील्ड को सेट करने का सुझाव नहीं दिया जाता, क्योंकि यह हर हिट के साथ बदल सकता है.

कई ट्रैकर इस्तेमाल करना

एक ही जगह पर लागू करने में एक से ज़्यादा ट्रैकर का इस्तेमाल किया जा सकता है, जो एक से ज़्यादा प्रॉपर्टी को डेटा भेजने के लिए उपयोगी हो सकता है:

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.

अपने-आप मेज़रमेंट की सुविधाएं, जैसे कि ऑटोमैटिक स्क्रीन और अपवाद को मेज़र न करने वाली सुविधाएं, Google Analytics को डेटा भेजने के लिए सिर्फ़ एक ट्रैकर का इस्तेमाल करेंगी. अगर इन सुविधाओं का इस्तेमाल किया जा रहा है और आपको दूसरे ट्रैकर का इस्तेमाल करके डेटा भेजना है, तो आपको यह काम मैन्युअल तरीके से करना होगा.

रेफ़रंस के लिए, अपने-आप स्क्रीन मेज़रमेंट की सुविधा, दी गई GAITrackedViewController की tracker प्रॉपर्टी में दिए गए ट्रैकर का इस्तेमाल करती है. अपवाद के तौर पर पता न लगने वाला मेज़रमेंट, आपके GAI इंस्टेंस में बताए गए डिफ़ॉल्ट ट्रैकर का इस्तेमाल करता है.

डिफ़ॉल्ट ट्रैकर का इस्तेमाल करना

Google Analytics, एक डिफ़ॉल्ट ट्रैकर बनाए रखता है. शुरू किया गया पहला ट्रैकर, डिफ़ॉल्ट ट्रैकर बन जाता है. हालांकि, उसे बदला भी जा सकता है:

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

सैंपलिंग

Google Analytics को भेजे जाने वाले हिट की संख्या को सीमित करने के लिए, क्लाइंट-साइड सैंपलिंग चालू की जा सकती है. अगर आपके ऐप्लिकेशन में बहुत ज़्यादा उपयोगकर्ता हैं या Google Analytics को बहुत ज़्यादा डेटा भेजता है, तो सैंपलिंग चालू करने से रिपोर्टिंग बिना किसी रुकावट के होने में मदद मिलेगी.

उदाहरण के लिए, 50% की दर पर क्लाइंट-साइड सैंपलिंग लागू करने के लिए, इस कोड का इस्तेमाल करें:

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

ऐप्लिकेशन-लेवल से ऑप्ट आउट करना

ऐप्लिकेशन-लेवल पर ऑप्ट आउट फ़्लैग को चालू किया जा सकता है. यह पूरे ऐप्लिकेशन में Google Analytics को बंद कर देगा. ध्यान दें कि हर बार ऐप्लिकेशन के चालू होने पर यह फ़्लैग सेट होना चाहिए और डिफ़ॉल्ट रूप से NO पर सेट होगा.

ऐप्लिकेशन लेवल से ऑप्ट आउट करने की सेटिंग पाने के लिए, इनका इस्तेमाल करें:

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

ऐप्लिकेशन-लेवल पर ऑप्ट आउट करने के लिए, इनका इस्तेमाल करें:

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

क्लाइंट-साइड उपयोगकर्ता का डेटा मिटाना

अगर आपको अपने असली उपयोगकर्ताओं के Google Analytics क्लाइंट-साइड डेटा को रीसेट करना है या मिटाना है, तो आपके पास Google Analytics की फ़ाइलें मिटाने या नया क्लाइंट आईडी सेट करने का विकल्प है.

विकल्प 1: Google Analytics फ़ाइलें मिटाना

अगर आपका ऐप्लिकेशन, असली उपयोगकर्ता के लिए साफ़ तौर पर Client-ID सेट नहीं करता है, तो क्लाइंट आईडी को स्टोर करने वाली Google Analytics फ़ाइलें मिटाकर, नया क्लाइंट आईडी बनाया जा सकता है.

Google Analytics फ़ाइलों को मिटाने के लिए, यहां दिए गए तरीके का इस्तेमाल किया जा सकता है. Google Analytics शुरू करने से पहले यह तरीका चलाना ज़रूरी है:

/* 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.
    }
  }
}

दूसरा विकल्प: नया क्लाइंट आईडी सेट करना

नया यूनीक क्लाइंट आईडी जनरेट और सेट किया जा सकता है. बाद के सभी हिट नए क्लाइंट आईडी का इस्तेमाल करेंगे और पिछले डेटा को नए क्लाइंट आईडी के साथ नहीं जोड़ा जाएगा.

नया क्लाइंट आईडी जनरेट और सेट करने के लिए, नीचे दिया गया कोड इस्तेमाल करें:

[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 की पहचान छिपाएं

आईपी पते की पहचान छिपाने की सुविधा चालू करने पर, Google Analytics को यह पता चलता है कि वह SDK टूल की भेजी गई आईपी जानकारी को छिपाता है. इसके लिए, वह स्टोरेज से पहले आईपी पते की आखिरी ऑक्टेट को हटा देता है.

यहां दिए गए उदाहरण में, किसी ट्रैकर के लिए आईपी की पहचान छिपाने की सुविधा enable करने का तरीका बताया गया है:

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

आईपी की पहचान छिपाने वाले फ़ंक्शन को किसी भी समय सेट किया जा सकता है.

जांच और डीबग करना

iOS के लिए Google Analytics SDK, परीक्षण और डीबगिंग को आसान बनाने वाले टूल उपलब्ध कराता है.

ड्राई रन

SDK टूल एक dryRun फ़्लैग देता है, जिसे सेट करने पर यह किसी भी डेटा को Google Analytics में भेजे जाने से रोकता है. जब भी आप किसी लागू करने की प्रोसेस की जांच कर रहे हों या उसे डीबग कर रहे हों, तब आपको dryRun फ़्लैग सेट करना चाहिए. साथ ही, अपनी Google Analytics रिपोर्ट में टेस्ट डेटा नहीं दिखाना चाहिए.

ड्राई रन फ़्लैग सेट करने के लिए:

[[GAI sharedInstance] setDryRun:YES];

लॉगर

GAILogger प्रोटोकॉल, शब्दों की जानकारी के इन लेवल पर SDK से काम के मैसेज मैनेज करने के लिए दिया जाता है: error, warning, info, और verbose.

SDK टूल, स्टैंडर्ड Logger को लागू करता है, जो डिफ़ॉल्ट रूप से कंसोल में सिर्फ़ चेतावनी या गड़बड़ी के मैसेज लॉग करता है. Logger की कितने शब्दों में जानकारी दी जाए, यह सेट करने के लिए:

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

Logger को पसंद के मुताबिक लागू करने की सुविधा का भी इस्तेमाल किया जा सकता है:

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

पूरा उदाहरण

नीचे दिए गए उदाहरण में, Google Analytics लागू करने की प्रोसेस शुरू करने और सिंगल स्क्रीन व्यू भेजने के लिए ज़रूरी कोड दिखाया गया है.

इसके बाद, किसी उपयोगकर्ता को पहली स्क्रीन दिखाए जाने पर स्क्रीन व्यू मेज़र किया जाता है:

आम तौर पर, ऐप्लिकेशन का ऐक्सेस देने वाले व्यक्ति से ही इसे शुरू करने की प्रोसेस शुरू की जा सकती है, जैसा कि इस उदाहरण में दिखाया गया है:

//
//  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

इसके बाद, उपयोगकर्ता को व्यू दिखने पर स्क्रीन व्यू को मापने के लिए:

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