উন্নত কনফিগারেশন - Android SDK

এই নথিটি Android v3-এর জন্য Google Analytics SDK-এর কিছু উন্নত কনফিগারেশন বৈশিষ্ট্যের একটি ওভারভিউ প্রদান করে।

ওভারভিউ

অ্যান্ড্রয়েডের জন্য Google Analytics SDK Google Analytics-এ ডেটা সেট এবং পাঠাতে একটি Tracker ক্লাস এবং একটি GoogleAnalytics সিঙ্গেলটন প্রদান করে যা আপনার বাস্তবায়নের বৈশ্বিক কনফিগারেশন মানগুলির একটি ইন্টারফেস হিসাবে কাজ করে।

আরম্ভ

কোনও ডেটা পরিমাপ করার আগে, আপনাকে অবশ্যই একটি Context এবং একটি Google Analytics সম্পত্তি ID প্রদান করে GoogleAnalytics singleton এর মাধ্যমে অন্তত একটি ট্র্যাকার শুরু করতে হবে:

// Initialize a tracker using a Google Analytics property ID.
GoogleAnalytics.getInstance(this).getTracker("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.
 */
Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y");

HashMap<String, String> hitParameters = new HashMap<String, String>();
hitParameters.put(Fields.HIT_TYPE, "appview");
hitParameters.put(Fields.SCREEN_NAME, "Home Screen");

tracker.send(hitParameters);

MapBuilder ক্লাস হিট নির্মাণের প্রক্রিয়াকে সহজ করে এবং বেশিরভাগ ব্যবহারের ক্ষেত্রে এটি সুপারিশ করা হয়। এখানে আমরা কোডের কম লাইন সহ একই স্ক্রীন ভিউ পাঠাতে পারি:

// Sending the same screen view hit using MapBuilder.createAppView()
tracker.send(MapBuilder
  .createAppView()
  .set(Fields.SCREEN_NAME, "Home Screen")
  .build()
);

পরিমাপ প্রোটোকল অ্যাম্পারস্যান্ড সিনট্যাক্স

পরিমাপ প্রোটোকল অ্যাম্পারস্যান্ড সিনট্যাক্স ব্যবহার করে ট্র্যাকার অবজেক্টে সেট করার মাধ্যমে, একটি Builder বা পরবর্তী সমস্ত হিটে মান সেট করে একটি একক হিটেও মান সেট করা যেতে পারে:

// Setting the content description field on a single hit using ampersand syntax.
tracker.send(MapBuilder
  .createAppView()
  .set(Fields.SCREEN_NAME, "Home Screen")
  .build()
);

উপলব্ধ পরিমাপ প্রোটোকল পরামিতিগুলির সম্পূর্ণ তালিকার জন্য, পরিমাপ প্রোটোকল পরামিতি রেফারেন্স দেখুন।

একাধিক হিট মান প্রয়োগ

ট্র্যাকারে সরাসরি সেট করা যেকোনো মান বজায় থাকবে এবং একাধিক হিটগুলিতে প্রয়োগ করা হবে, যেমন এই উদাহরণে:

// Set screen name on the tracker to be sent with all hits.
tracker.set(Fields.SCREEN_NAME, "Home Screen");

// Send a screen view for "Home Screen"
tracker.send(MapBuilder
    .createAppView()
    .build()
);

// This event will also be sent with &cd=Home%20Screen.
tracker.send(MapBuilder
    .createEvent("UX", "touch", "menuButton", null)
    .build()
);

// Clear the screen name field when we're done.
tracker.set(Fields.SCREEN_NAME, null);

শুধুমাত্র যে মানগুলি আপনি একাধিক হিট জুড়ে বজায় রাখতে চান তা সরাসরি ট্র্যাকারে সেট করা উচিত। একটি ট্র্যাকারে একটি স্ক্রিন নাম সেট করা অর্থপূর্ণ হবে, যেহেতু একই মান পরবর্তী স্ক্রিন ভিউ এবং ইভেন্ট হিটগুলিতে প্রয়োগ করা যেতে পারে। যাইহোক, ট্র্যাকারে হিট টাইপের মতো একটি ক্ষেত্র সেট করার পরামর্শ দেওয়া হয় না, কারণ এটি সম্ভবত প্রতিটি আঘাতের সাথে পরিবর্তিত হবে।

একাধিক ট্র্যাকার ব্যবহার করা

একাধিক ট্র্যাকার একক বাস্তবায়নে ব্যবহার করা যেতে পারে, যা একাধিক বৈশিষ্ট্যে ডেটা পাঠানোর জন্য উপযোগী হতে পারে:

Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1");

// Trackers may be named. By default, name is set to the property ID.
Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("altTracker", "UA-XXXX-2";

t1.set(Fields.SCREEN_NAME, "Home Screen");
t2.set(Fields.SCREEN_NAME, getClass().toString());

// Send screen view to UA-XXXX-1.
t1.send(MapBuilder
   .createAppView()
   .build()
);

// Send screen view to UA-XXXX-2.
t2.send(MapBuilder
   .createAppView()
   .build()
);

স্বয়ংক্রিয় পরিমাপ বৈশিষ্ট্যগুলি, যেমন স্বয়ংক্রিয় স্ক্রীন এবং অনাক্ষিত ব্যতিক্রম পরিমাপ, শুধুমাত্র একটি ট্র্যাকার ব্যবহার করবে Google Analytics-এ ডেটা পাঠাতে। আপনি যদি এই বৈশিষ্ট্যগুলি ব্যবহার করেন এবং অন্যান্য ট্র্যাকার ব্যবহার করে ডেটা পাঠাতে চান তবে আপনাকে ম্যানুয়ালি তা করতে হবে।

ডিফল্ট ট্র্যাকার ব্যবহার করে

Google Analytics একটি ডিফল্ট ট্র্যাকার বজায় রাখে। আরম্ভ করা প্রথম ট্র্যাকার ডিফল্ট ট্র্যাকার হয়ে যায় কিন্তু ওভাররাইড করা হতে পারে:

// Tracker t1 becomes the default tracker because it is initialized first.
Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1");
Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-2");


// Returns tracker t1.
Tracker defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker();

// Hit sent to UA-XXXX-1.
defaultTracker.send(MapBuilder
    .createAppView()
    .set(Fields.SCREEN_NAME, "Home Screen")
    .build()
);

// Override the default tracker.
GoogleAnalytics.getInstance(this).setDefaultTracker(t2);

// Now this call returns tracker t2.
defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker();

// Hit sent to UA-XXXX-2.
defaultTracker.send(MapBuilder
    .createAppView()
    .set(Fields.SCREEN_NAME, getClass().toString())
    .build()
);

স্যাম্পলিং

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

উদাহরণস্বরূপ, EasyTracker এবং XML এর মাধ্যমে 50% হারে ক্লায়েন্ট-সাইড স্যাম্পলিং সক্ষম করতে, আপনার analytics.xml ফাইলে নিম্নলিখিত প্যারামিটারটি ব্যবহার করুন:

<string name="ga_sampleFrequency">50.0</string>

একটি ট্র্যাকারের জন্য প্রোগ্রাম্যাটিকভাবে ক্লায়েন্ট-সাইড স্যাম্পলিং সক্ষম করতে:

mTracker.set(Fields.SAMPLE_RATE, 50.0d);

অ্যাপ-স্তরের অপ্ট আউট

আপনি একটি অ্যাপ-লেভেল অপ্ট আউট পতাকা সক্ষম করতে পারেন যা সমগ্র অ্যাপ জুড়ে Google Analytics অক্ষম করবে। মনে রাখবেন যে প্রতিবার অ্যাপটি চালু হওয়ার সময় এই পতাকাটি অবশ্যই সেট করতে হবে এবং ডিফল্ট NO তে থাকবে।

অ্যাপ-স্তরের অপ্ট আউট সেটিং পেতে, ব্যবহার করুন:

boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();

অ্যাপ-লেভেল অপ্ট আউট সেট করতে, ব্যবহার করুন:

GoogleAnalytics.getInstance(this).setAppOptOut(true);

একটি সাধারণ বাস্তবায়নে, একটি অ্যাপ SharedPreferences এ পরিবর্তনের জন্য শুনতে পারে এবং সেই অনুযায়ী Google Analytics অপ্ট-আউট সেটিং আপডেট করতে পারে:

SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);

userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
      String key) {

    if (key.equals(TRACKING_PREF_KEY)) {
      GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
    } else {
    // Any additional changed preference handling.
    }
  }
});

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

অ্যান্ড্রয়েডের জন্য Google অ্যানালিটিক্স SDK পরীক্ষা এবং ডিবাগিং সহজ করার জন্য সরঞ্জাম সরবরাহ করে৷

ড্রাই রান

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

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

// When dry run is set, hits will not be dispatched, but will still be logged as
// though they were dispatched.
GoogleAnalytics.getInstance(this).setDryRun(true);

লগার

Logger ইন্টারফেসটি SDK থেকে কার্যকরী বার্তাগুলিকে শব্দচয়নের এই স্তরগুলিতে পরিচালনা করার জন্য সরবরাহ করা হয়েছে: error , warning , info , এবং verbose

SDK একটি স্ট্যান্ডার্ড Logger ইমপ্লিমেন্টেশন শুরু করে, যা ডিফল্টরূপে কনসোলে শুধুমাত্র সতর্কতা বা ত্রুটি বার্তা লগ করবে। এই বার্তা logcat পাওয়া যাবে. Logger ভারবোসিটি সেট করতে:

// Set the log level to verbose.
GoogleAnalytics.getInstance(this).getLogger()
    .setLogLevel(LogLevel.VERBOSE);

Logger কাস্টম বাস্তবায়নও ব্যবহার করা যেতে পারে:

// Provide a custom logger.
GoogleAnalytics.getInstance(this).setLogger(new CustomLogger ());

সম্পূর্ণ উদাহরণ

নীচের উদাহরণটি একটি Google Analytics বাস্তবায়ন শুরু করতে এবং একটি একক স্ক্রীন ভিউ পাঠাতে প্রয়োজনীয় কোডটি দেখায়৷

package com.example.app;

import com.google.analytics.tracking.android.GAServiceManager;
import com.google.analytics.tracking.android.GoogleAnalytics;
import com.google.analytics.tracking.android.Tracker;

import android.app.Application;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;


/*
 * An advanced Google Analytics implementation may be initialized
 * in a subclass of Application. Note that this example assumes data
 * only needs to be sent to a single Google Analytics property ID.
 */
public class MyApp extends Application {

  private static GoogleAnalytics mGa;
  private static Tracker mTracker;

  /*
   * Google Analytics configuration values.
   */
  // Placeholder property ID.
  private static final String GA_PROPERTY_ID = "UA-XXXX-Y";

  // Dispatch period in seconds.
  private static final int GA_DISPATCH_PERIOD = 30;

  // Prevent hits from being sent to reports, i.e. during testing.
  private static final boolean GA_IS_DRY_RUN = false;

  // GA Logger verbosity.
  private static final LogLevel GA_LOG_VERBOSITY = LogLevel.INFO;

  // Key used to store a user's tracking preferences in SharedPreferences.
  private static final String TRACKING_PREF_KEY = "trackingPreference";


  /*
   * Method to handle basic Google Analytics initialization. This call will not
   * block as all Google Analytics work occurs off the main thread.
   */
  private void initializeGa() {
    mGa = GoogleAnalytics.getInstance(this);
    mTracker = mGa.getTracker(GA_PROPERTY_ID);

    // Set dispatch period.
    GAServiceManager.getInstance().setLocalDispatchPeriod(GA_DISPATCH_PERIOD);

    // Set dryRun flag.
    mGa.setDryRun(GA_IS_DRY_RUN);

    // Set Logger verbosity.
    mGa.getLogger().setLogLevel(GA_LOG_VERBOSITY);

    // Set the opt out flag when user updates a tracking preference.
    SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {
      @Override
      public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
          String key) {
        if (key.equals(TRACKING_PREF_KEY)) {
          GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
        }
      }
    });
  }

  @Override
  public void onCreate() {
    super.onCreate();
    initializeGa();
  }

  /*
   * Returns the Google Analytics tracker.
   */
  public static Tracker getGaTracker() {
    return mTracker;
  }

  /*
   * Returns the Google Analytics instance.
   */
  public static GoogleAnalytics getGaInstance() {
    return mGa;
  }
}

পরবর্তী, একটি স্ক্রীন ভিউ পরিমাপ করা হয় যখন প্রথম স্ক্রীনটি একজন ব্যবহারকারীর কাছে প্রদর্শিত হয়:

package com.example.app

import android.app.Activity

/**
 * A simple Activity that sends a screen view to Google Analytics
 * when it is displayed to the user.
 */
public class HomeScreen extends Activity {

  private static final String SCREEN_LABEL = "Home Screen";

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Fields set on a tracker persist for all hits, until they are
    // overridden or cleared by assignment to null.
    MyApp.getGaTracker().set(Fields.SCREEN_NAME, SCREEN_LABEL);
  }

  @Override
  public void onStart() {
    super.onStart();

    // Send a screen view when the Activity is displayed to the user.
    MyApp.getGaTracker().send(MapBuilder
        .createAppView.build());
  }
}