উন্নত কনফিগারেশন - 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-এ ডেটা সেটিং এবং পাঠানোর জন্য ব্যবহার করা যেতে পারে।

সেটিং এবং ডেটা পাঠানো

ট্র্যাকারে প্যারামিটার-মান জোড়ার মানচিত্র সেট করে এবং setsend পদ্ধতির মাধ্যমে পাঠানোর মাধ্যমে ডেটা Google Analytics-এ পাঠানো হয়:

/*
 * 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-এ পাঠানো হিটের সংখ্যা সীমিত করতে ক্লায়েন্ট-সাইড স্যাম্পলিং সক্ষম করতে পারেন। যদি আপনার অ্যাপের বিপুল সংখ্যক ব্যবহারকারী থাকে বা অন্যথায় গুগল অ্যানালিটিক্সে প্রচুর পরিমাণে ডেটা পাঠায়, তাহলে নমুনা সক্ষম করা নিরবচ্ছিন্ন প্রতিবেদন নিশ্চিত করতে সহায়তা করবে।

উদাহরণস্বরূপ, 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 ফাইলগুলি মুছুন

যদি আপনার অ্যাপ স্পষ্টভাবে কোনো শেষ ব্যবহারকারীর জন্য ক্লায়েন্ট আইডি সেট না করে তাহলে আপনি ক্লায়েন্ট আইডি সংরক্ষণ করতে ব্যবহৃত 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.
    }
  }
}

বিকল্প 2: একটি নতুন ক্লায়েন্ট আইডি সেট করুন

আপনি একটি নতুন অনন্য ক্লায়েন্ট আইডি তৈরি এবং সেট করতে পারেন। পরবর্তী সমস্ত হিট নতুন ক্লায়েন্ট আইডি ব্যবহার করবে এবং আগের ডেটা নতুন ক্লায়েন্ট আইডির সাথে যুক্ত হবে না।

একটি নতুন ক্লায়েন্ট আইডি তৈরি এবং সেট করতে নিম্নলিখিত কোডটি চালান:

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

বেনামী আইপি

বেনামী আইপি কার্যকারিতা সক্ষম করা Google অ্যানালিটিক্সকে SDK দ্বারা পাঠানো আইপি তথ্যকে বেনামী করতে বলে আইপি ঠিকানার শেষ অক্টেটটি সঞ্চয়স্থানের আগে সরিয়ে দিয়ে।

নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি ট্র্যাকারের জন্য বেনামী আইপি কার্যকারিতা সক্ষম করতে হয় :

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

বেনামী আইপি কার্যকারিতা যে কোনো সময় সেট করা যেতে পারে.

পরীক্ষা এবং ডিবাগিং

iOS-এর জন্য Google Analytics SDK পরীক্ষা এবং ডিবাগিংকে আরও সহজ করার জন্য টুল সরবরাহ করে।

ড্রাই রান

SDK একটি dryRun ফ্ল্যাগ প্রদান করে যেটি সেট করা হলে, Google Analytics-এ কোনো ডেটা পাঠানো থেকে বাধা দেয়। আপনি যখনই কোনো বাস্তবায়ন পরীক্ষা বা ডিবাগ করছেন তখনই dryRun ফ্ল্যাগ সেট করা উচিত এবং আপনার Google অ্যানালিটিক্স রিপোর্টে পরীক্ষার ডেটা উপস্থিত হতে চান না।

ড্রাই রান পতাকা সেট করতে:

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