डिस्पैच करना - iOS SDK टूल

इस दस्तावेज़ में बताया गया है कि iOS v3 के लिए Google Analytics SDK का इस्तेमाल करके, Google Analytics को डेटा कैसे मैनेज किया जा सकता है.

खास जानकारी

iOS के लिए Google Analytics SDK का इस्तेमाल करके इकट्ठा किए गए डेटा को Google Analytics को अलग थ्रेड पर भेजने से पहले, स्थानीय तौर पर सेव किया जाता है.

डेटा को हर व्यू के स्थानीय समय क्षेत्र में, अगले दिन सुबह 4 बजे तक डिस्पैच कर दिया जाना चाहिए. उसके बाद मिलने वाला कोई भी डेटा, रिपोर्ट में नहीं दिखेगा. उदाहरण के लिए, अगर किसी हिट को स्थानीय तौर पर रात 11:59 बजे सूची में डाला जाता है, तो रिपोर्ट में दिखने के लिए उसे सुबह 3:59 बजे तक, चार घंटे में भेज दिया जाना चाहिए. वहीं दूसरी ओर, रात 12:00 बजे की सूची में शामिल हिट को 28 घंटे में भेज दिया जाना चाहिए, यानी, अगले दिन सुबह 3:59 बजे, रिपोर्ट में दिखने के लिए.

समय-समय पर डिस्पैच करने की सुविधा

डिफ़ॉल्ट रूप से, iOS के लिए Google Analytics SDK से डेटा हर 2 मिनट में भेजा जाता है.

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

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

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

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

मैन्युअल तरीके से डिस्पैच करने की सुविधा

हिट को मैन्युअल रूप से भेजने के लिए, उदाहरण के लिए, जब आपको पता हो कि डिवाइस रेडियो का इस्तेमाल पहले से ही अन्य डेटा भेजने के लिए किया जा रहा है:

[[GAI sharedInstance] dispatch];

बैकग्राउंड की जानकारी भेजना

iOS ऐप्लिकेशन पर, बैकग्राउंड में डेटा भेजने की सुविधा चालू करने के लिए:

dispatchHandler के लिए प्रॉपर्टी जोड़ें

AppDelegate क्लास की लागू करने वाली फ़ाइल (AppDelegate.m) में, @implementation AppDelegate से पहले नीचे दी गई प्रॉपर्टी जोड़ें:

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

@implementation AppDelegate
// ...

sendHitsInBackground तरीका लागू करें

AppDelegate क्लास में, ऐप्लिकेशन के बैकग्राउंड में जाने पर, हिट भेजने के लिए sendHitsInBackground तरीका लागू करें:

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

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

applicationDidEnterBackground वाला तरीका बदलें

sendHitsInBackground तरीके को कॉल करने के लिए, AppDelegate क्लास में applicationDidEnterBackground तरीके को बदलें. यह तरीका, ऐप्लिकेशन के बैकग्राउंड में जाने पर हिट भेजता है:

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

applicationWillEnterForeground वाला तरीका बदलें

डिस्पैच इंटरवल को पहले जैसा करने के लिए, AppDelegate क्लास में applicationWillEnterForeground तरीके को बदलें. उदाहरण के लिए:

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