Gelişmiş Yapılandırma - Android SDK

Bu dokümanda, Android v3 için Google Analytics SDK'sının bazı gelişmiş yapılandırma özelliklerine genel bir bakış sunulmaktadır.

Genel bakış

Android için Google Analytics SDK'sı, verileri ayarlayıp Google Analytics'e göndermek için bir Tracker sınıfı ve uygulamanızın global yapılandırma değerleri için arayüz işlevi gören bir GoogleAnalytics teklisi sağlar.

Başlatma

Herhangi bir verinin ölçülebilmesi için bir Context ve Google Analytics mülk kimliği sağlayarak GoogleAnalytics tek başına en az bir izleyiciyi başlatmanız gerekir:

// Initialize a tracker using a Google Analytics property ID.
GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y")

Bu izleyici, artık verileri ayarlamak ve Google Analytics'e göndermek için kullanılabilir.

Veri Ayarlama ve Gönderme

Veriler, izleyicideki parametre-değer çiftlerinin eşlemeleri ayarlanıp set ve send yöntemleri aracılığıyla göndererek Google Analytics'e gönderilir:

/*
 * 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 sınıfı isabet oluşturma sürecini basitleştirir ve çoğu kullanım alanı için önerilir. Burada aynı ekran görünümünü daha az kod satırıyla gönderebiliriz:

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

Measurement Protocol Ampers ve Söz Dizimi

Değerler, Measurement Protocol ve "söz dizimi" kullanılarak, tek bir isabette, Builder üzerinde bir değer ayarlayarak veya sonraki tüm isabetlerde, izleyici nesnesinin üzerinde de ayarlanabilir.

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

Mevcut Measurement Protocol parametrelerinin tam listesi için Measurement Protocol Parametre Referansı'na bakın.

Birden Çok İsabete Değer Uygulama

İzleyicide doğrudan ayarlanan değerler, aşağıdaki örnekte olduğu gibi korunur ve birden fazla isabete uygulanır:

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

Yalnızca birden çok isabette kalmasını istediğiniz değerler doğrudan izleyicide ayarlanmalıdır. Sonraki ekran görüntülenme ve etkinlik isabetlerine aynı değer uygulanabileceği için izleyicide ekran adı ayarlamak mantıklıdır. Ancak izleyicide isabet türü gibi bir alan ayarlamanız önerilmez. Çünkü bu değer, her isabetle birlikte değişir.

Birden Çok İzleyici Kullanma

Tek bir uygulamada birden fazla izleyici kullanılabilir. Bu, birden fazla mülke veri göndermek için yararlı olabilir:

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()
);

Otomatik ekran ve yakalanmamış istisna ölçümü gibi otomatik ölçüm özellikleri, Google Analytics'e veri göndermek için yalnızca bir izleyici kullanır. Bu özellikleri kullanıyor ve diğer izleyiciler aracılığıyla veri göndermek istiyorsanız bunu manuel olarak yapmanız gerekir.

Varsayılan izleyiciyi kullanma

Google Analytics varsayılan bir izleyici sağlar. Başlatılan ilk izleyici varsayılan izleyici olur ancak geçersiz kılınabilir:

// 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()
);

Örnekleme

Google Analytics'e gönderilen isabet sayısını sınırlamak için istemci taraflı örneklemeyi etkinleştirebilirsiniz. Uygulamanız çok sayıda kullanıcıya sahipse veya Google Analytics'e büyük miktarda veri gönderiyorsa örneklemenin etkinleştirilmesi kesintiye uğramadan raporlama yapılmasına yardımcı olur.

Örneğin, EasyTracker ve XML üzerinden% 50 oranında istemci taraflı örneklemeyi etkinleştirmek için analytics.xml dosyanızda aşağıdaki parametreyi kullanın:

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

İstemci taraflı örneklemeyi bir izleyici için programatik olarak etkinleştirmek isterseniz:

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

Uygulama Düzeyinde Kapsam Dışında Kalma

Google Analytics'i uygulamanın tamamında devre dışı bırakacak uygulama düzeyinde bir devre dışı bırakma işaretini etkinleştirebilirsiniz. Uygulama her başladığında bu işaretin ayarlanması ve varsayılan olarak NO ayarının ayarlanması gerektiğini unutmayın.

Uygulama düzeyinde kapsam dışında kalma ayarını almak için şunu kullanın:

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

Uygulama düzeyinde kapsam dışında kalmayı ayarlamak için şunu kullanın:

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

Tipik bir uygulamada, bir uygulama SharedPreferences işlevindeki bir değişikliği dinleyebilir ve Google Analytics kapsamı dışında kalma ayarını buna göre güncelleyebilir:

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.
    }
  }
});

Test ve Hata Ayıklama

Android için Google Analytics SDK'sı, test ve hata ayıklamayı kolaylaştıran araçlar sunar.

Prova

SDK ayarlandığında, verilerin Google Analytics'e gönderilmesini engelleyen bir dryRun işareti sağlar. Bir uygulamayı test ettiğiniz veya hatalarını ayıkladığınız ve test verilerinin Google Analytics raporlarınızda görünmesini istemediğiniz durumlarda dryRun işaretinin ayarlanması gerekir.

Prova işaretini ayarlamak için:

// 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'dan gelen faydalı mesajları şu ayrıntı düzeylerinde işlemek için Logger arayüzü sağlanır: error, warning, info ve verbose.

SDK varsayılan olarak yalnızca uyarı veya hata mesajlarını konsola kaydedecek standart bir Logger uygulaması başlatır. Bu mesajlar logcat'te kullanılabilir. Logger ayrıntı düzeyini ayarlamak için:

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

Logger için özel uygulamalar da kullanılabilir:

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

Tam Örnek

Aşağıdaki örnekte, bir Google Analytics uygulamasını başlatmak ve tek bir ekran görüntüsü göndermek için gereken kod gösterilmektedir.

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

Daha sonra, bir ekran ilk kez kullanıcıya gösterildiğinde ekran görüntülenme ölçümü ölçülür:

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());
  }
}