Android के लिए Google Analytics SDK टूल: v3 पर माइग्रेट करना

इस गाइड में, Android के लिए Google Analytics SDK के वर्शन 3 पर अपग्रेड करने का तरीका बताया गया है.

एक नज़र में जानकारी: वर्शन 3 में नया क्या है

वर्शन 3 में मौजूद एपीआई को रीफ़ैक्टर किया गया है, ताकि नेटिव और वेब प्लैटफ़ॉर्म पर वे ज़्यादा बेहतर तरीके से काम कर सकें. वर्शन 2 के सभी उपयोगकर्ताओं को इन बदलावों पर ध्यान देना चाहिए:

  • अब हिट एक ही send(Map<String, String> parameters) तरीके का इस्तेमाल करके भेजे जाते हैं.
  • डीबग मोड को Logger से बदल दिया गया है
  • EasyTracker अब Tracker को सब-क्लास कर देता है. इससे इंटरफ़ेस में कुछ बदलाव होते हैं.
  • नया: भेजे गए डेटा को रिपोर्ट में दिखने से रोकने के लिए, dryRun फ़्लैग जोड़ा गया है.

बदलावों की पूरी सूची के लिए, Android चेंजलॉग देखें.

आरंभ करने से पहले

v3 पर अपग्रेड करने से पहले, आपको इन चीज़ों की ज़रूरत होगी:

पाथ अपग्रेड करें

शुरू करने के लिए, अपने मौजूदा लागू किए गए वर्शन से v3 पर अपग्रेड पाथ चुनें:

EasyTracker: v1.x से v3

यह सुझाव दिया जाता है कि EasyTracker v1.x का इस्तेमाल करने वाले लोग, EasyTracker के साथ v3 का इस्तेमाल शुरू करने के लिए, v3 के शुरुआती निर्देश का पालन करें.

EasyTracker: v2.x से v3

v2.x EasyTracker उपयोगकर्ताओं को v3 पर अपग्रेड करने के लिए, इन चरणों को पूरा करना होगा:

  1. Context: देने के लिए, EasyTracker.getInstance() पर कॉल अपडेट करें
    // v2 (Old)
    // EasyTracker.getInstance().activityStart(this);
    
    // v3:
    EasyTracker.getInstance(this).activityStart(this);
    
  2. EasyTracker, अब Tracker को सब-क्लास कर देता है -- EasyTracker.getTracker() के लिए कॉल हटाएं:
    // v2 (Old)
    Tracker v2Tracker = EasyTracker.getInstance().getTracker();
    
    // v3
    Tracker v3Tracker = EasyTracker.getInstance(this);
    
  3. send<hit-type> सुविधा के सभी तरीकों को नए send(Map<String, String> parameters) तरीके से बदलें:
    // v2 (Old)
    Tracker v2EasyTracker = EasyTracker.getInstance().getTracker(this);
    v2EasyTracker.sendView("Home Screen");
    
    // v3
    Tracker v3EasyTracker = EasyTracker.getInstance(this);
    
    // Set the screen name on the tracker so that it is used in all hits sent from this screen.
    v3EasyTracker.set(Fields.SCREEN_NAME, "Home Screen");
    
    // Send a screenview.
    v3EasyTracker.send(MapBuilder
      .createAppView()
      .build()
    );
    
    वर्शन 3 में डेटा भेजने के बारे में ज़्यादा जानें.


  4. ga_debug EasyTracker पैरामीटर को ga_logLevel से बदलें और वर्बोसिटी की इन वैल्यू में से कोई एक: verbose, info, warning, error:
    <!-- res/values/analytics.xml -->
    
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
      <string name="ga_trackingId">UA-XXXX-Y</string>
      <!-- REMOVE: <bool name="ga_debug">true</bool> -->
      <string name="ga_logLevel">verbose</string>
    </resources>
    
    ज़्यादा जानकारी के लिए, आसानTracker पैरामीटर का रेफ़रंस देखें.


  5. GoogleAnalytics.requestAppOptOut() अब काम नहीं करता. इसके बजाय, GoogleAnalytics.getAppOptOut() का इस्तेमाल करें:
    // v2 (Old)
    GoogleAnalytics.getInstance(this).requestAppOptOut(new AppOptOutCallback() {
       @Override
       public void reportAppOptOut(boolean optOut) {
         if (optOut) {
         ... // Alert the user that they've opted out.
         }
       });
    }
    
    // v3
    boolean optOutPreference = GoogleAnalytics.getInstance(this).getAppOptOut();
    
  6. (ज़रूरी नहीं) अपनी प्रोडक्शन रिपोर्ट में टेस्ट डेटा को दिखने से रोकने के लिए, लागू करने की प्रोसेस की जांच करते समय, ga_dryRun EasyTracker पैरामीटर जोड़ें और इसे true पर सेट करें:
  7. <!-- res/values/analytics.xml -->
    
    <?xml version="1.0" encoding="utf-8"?>
    
    <resources>
      <string name="ga_trackingId">UA-XXXX-Y</string>
      <string name="ga_logLevel">verbose</string>
    
      <!-- Prevent data from appearing in reports. Useful for testing. -->
      <bool name="ga_dryRun">true</bool>
    
    </resources>
    

कस्टम इंप्लीमेंटेशन: v1.x से v3

v1.x उपयोगकर्ता जो EasyTracker का इस्तेमाल नहीं करते हैं, उन्हें V3 शुरू करने की गाइड का पालन करना चाहिए और बेहतर कॉन्फ़िगरेशन डेवलपर गाइड को ज़रूरत के मुताबिक देखना चाहिए.

पसंद के मुताबिक लागू करना: v2.x से v3

v2.x के जो उपयोगकर्ता EasyTracker का इस्तेमाल नहीं करते उन्हें v3 पर अपग्रेड करने के लिए, नीचे दिया गया तरीका अपनाना चाहिए:

  1. 'send<hit-type>' के सभी आसान तरीकों की जगह, send(Map<String, String> parameters) के नए तरीके का इस्तेमाल करें:
    // v2 (Old)
    Tracker v2Tracker = GoogleAnaytics.getInstance(this).getTracker("UA-XXXX-Y");
    v2Tracker.sendView("Home Screen");
    
    // v3
    Tracker v3Tracker = GoogleAnaytics.getInstance(this).getTracker("UA-XXXX-Y");
    
    // This screen name value will remain set on the tracker and sent with
    // hits until it is set to a new value or to null.
    v3Tracker.set(Fields.SCREEN_NAME, "Home Screen");
    
    v3Tracker.send(MapBuilder
      .createAppView()
      .build()
    );
    
  2. GoogleAnalytics.setDebug() के लिए कॉल हटाएं और उनकी जगह GoogleAnalytics.getLogger().setLogLevel() का इस्तेमाल करें:
    // V2 (Old)
    GoogleAnalytics.getInstance(this).setDebug(true);
    
    // V3
    GoogleAnalytics.getInstance(this)
        .getLogger()
        .setLogLevel(LogLevel.VERBOSE);  // VERBOSE | INFO | DEBUG | WARNING
    
    लॉगर के बारे में ज़्यादा जानें

  3. ऐप्लिकेशन के खुलने पर v3 SDK टूल, अपने-आप नया सेशन शुरू नहीं करता. हालांकि, EasyTracker का इस्तेमाल करते समय यह सेशन अपने-आप शुरू हो जाता है. अगर आपको इस व्यवहार को किसी v2 कस्टम इंप्लिमेंटेशन की मदद से सुरक्षित रखना है, तो ऐप्लिकेशन शुरू करने पर, आपको अपने सेशन कंट्रोल लॉजिक को लागू करना होगा:
  4. package com.example.app;
    
    import com.google.analytics.tracking.android.GoogleAnalytics;
    import com.google.analytics.tracking.android.Tracker;
    
    import android.app.Application;
    
    public class MyApp extends Application {
    
      private static Tracker mTracker;
      private static final String GA_PROPERTY_ID = "UA-XXXX-Y";
    
      @Override
      public void onCreate() {
        super.onCreate();
        mTracker = GoogleAnalytics.getInstance(this).getTracker(GA_PROPERTY_ID);
    
        // CAUTION: Setting session control directly on the tracker persists the
        // value across all subsequent hits, until it is manually set to null.
        // This should never be done in normal operation.
        //
        // mTracker.set(Fields.SESSION_CONTROL, "start");
    
        // Instead, send a single hit with session control to start the new session.
        mTracker.send(MapBuilder
          .createEvent("UX", "appstart", null, null)
          .set(Fields.SESSION_CONTROL, "start")
          .build()
        );
      }
    }
    
    
  5. (ज़रूरी नहीं) टेस्ट के दौरान dryRun फ़्लैग सेट करें, ताकि टेस्ट डेटा को प्रोडक्शन रिपोर्ट से प्रोसेस होने से रोका जा सके:
  6. // When true, dryRun flag prevents data from being processed with reports.
    GoogleAnalytics.getInstance(this).setDryRun(true);
    

रेफ़रंस

नीचे दिए गए सेक्शन में, V3 SDK टूल का इस्तेमाल करके डेटा सेट करने और भेजने के रेफ़रंस के उदाहरण दिए गए हैं.

वर्शन 3 में Maps का इस्तेमाल करके डेटा भेजना

वर्शन 3 में, डेटा भेजने के लिए send() एक ही तरीके का इस्तेमाल किया जाता है. इसमें Map Google Analytics फ़ील्ड और वैल्यू को आर्ग्युमेंट के तौर पर लिया जाता है. MapBuilder यूटिलिटी क्लास दी जाती है, ताकि हिट बनाने की प्रोसेस को आसान बनाया जा सके:

// Sending a screenview in v3 using MapBuilder.
Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y");
tracker.set(Fields.SCREEN_NAME, "Home Screen");

tracker.send(MapBuilder
  .createAppView()                           // Creates a Map of hit type 'AppView' (screenview).
  .set(Fields.customDimension(1), "Premium") // Set any additional fields for this hit.
  .build()                                   // Build and return the Map to the send method.
);

MapBuilder क्लास का इस्तेमाल, साथ काम करने वाले किसी भी हिट टाइप को बनाने के लिए किया जा सकता है, जैसे कि इवेंट:

// Sending an event in v3 using MapBuilder.createEvent()
tracker.send(MapBuilder
    .createEvent("UX", "touch", "menuButton", null)
    .build()
);

v3 में डेटा भेजने के बारे में ज़्यादा जानें.

वर्शन 3 में ट्रैकर पर डेटा सेट करना

वैल्यू को सीधे Tracker पर भी सेट किया जा सकता है. इसके लिए, set() तरीके का इस्तेमाल किया जा सकता है. सीधे सेट की गई वैल्यू, उस Tracker से मिलने वाले सभी हिट पर लागू होती हैं :

// Values set directly on a tracker apply to all subsequent hits.
tracker.set(Fields.SCREEN_NAME, "Home Screen");

// This screenview hit will include the screen name "Home Screen".
tracker.send(MapBuilder.createAppView().build());

// And so will this event hit.
tracker.send(MapBuilder
  .createEvent("UX", "touch", "menuButton", null)
  .build()
);

Tracker पर सेट की गई वैल्यू को मिटाने के लिए, प्रॉपर्टी को null पर सेट करें:

// Clear the previously-set screen name value.
tracker.set(Fields.SCREEN_NAME, null);

// Now this event hit will not include a screen name value.
tracker.send(MapBuilder
  .createEvent("UX", "touch", "menuButton", null)
  .build()
);

v3 में डेटा सेट करने के बारे में ज़्यादा जानें