Konfigurasi Lanjutan - Android SDK

Dokumen ini memberikan ringkasan tentang beberapa fitur konfigurasi lanjutan Google Analytics SDK for Android v3.

Ringkasan

Google Analytics SDK untuk Android menyediakan class Tracker untuk menetapkan dan mengirim data ke Google Analytics, dan singleton GoogleAnalytics yang berfungsi sebagai antarmuka ke nilai konfigurasi global dari penerapan Anda.

Inisialisasi

Sebelum data dapat diukur, Anda harus menginisialisasi setidaknya satu pelacak melalui singleton GoogleAnalytics dengan memberikan Context dan ID properti Google Analytics:

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

Sekarang pelacak ini dapat digunakan untuk menetapkan dan mengirim data ke Google Analytics.

Menetapkan dan Mengirim Data

Data dikirim ke Google Analytics dengan menetapkan peta pasangan parameter value di pelacak dan mengirimkannya melalui metode set dan send:

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

Class MapBuilder menyederhanakan proses pembuatan hit dan direkomendasikan untuk sebagian besar kasus penggunaan. Di sini kita dapat mengirimkan tampilan layar yang sama dengan baris kode yang lebih sedikit:

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

Sintaksis ampersand Measurement Protocol

Nilai juga dapat ditetapkan pada satu hit, dengan menetapkan nilai pada Builder, atau pada semua hit berikutnya, dengan menetapkannya pada objek pelacak itu sendiri, menggunakan sintaksis ampersand dan Measurement Protocol:

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

Untuk mengetahui daftar lengkap parameter Measurement Protocol yang tersedia, lihat Referensi Parameter Measurement Protocol.

Menerapkan Nilai ke Beberapa Klik

Setiap nilai yang ditetapkan di pelacak secara langsung akan dipertahankan dan diterapkan ke beberapa hit, seperti dalam contoh ini:

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

Hanya nilai yang ingin Anda pertahankan di beberapa hit yang harus ditetapkan langsung di pelacak. Penetapan nama layar pada pelacak adalah hal yang masuk akal, karena nilai yang sama dapat diterapkan ke tampilan layar dan hit peristiwa berikutnya. Namun, sebaiknya jangan menetapkan kolom seperti jenis hit di pelacak, karena kemungkinan akan berubah dengan setiap hit.

Menggunakan Beberapa Pelacak

Beberapa pelacak dapat digunakan dalam satu implementasi, yang dapat berguna untuk mengirim data ke beberapa properti:

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

Fitur pengukuran otomatis, seperti pengukuran otomatis layar dan pengecualian yang tidak tertangkap, hanya akan menggunakan satu pelacak untuk mengirim data ke Google Analytics. Jika Anda menggunakan fitur ini dan ingin mengirim data menggunakan pelacak lain, Anda harus melakukannya secara manual.

Menggunakan Pelacak Default

Google Analytics mengelola pelacak default. Pelacak pertama yang diinisialisasi akan menjadi pelacak default, tetapi mungkin diganti:

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

Pengambilan Sampel

Anda dapat mengaktifkan pengambilan sampel sisi klien untuk membatasi jumlah hit yang dikirim ke Google Analytics. Jika aplikasi Anda memiliki pengguna dalam jumlah besar atau akan mengirimkan volume data yang besar ke Google Analytics, mengaktifkan pengambilan sampel akan membantu memastikan pelaporan yang tidak terganggu.

Misalnya, untuk mengaktifkan sampling sisi klien pada frekuensi 50% melalui EasyTracker dan XML, gunakan parameter berikut di file analytics.xml Anda:

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

Untuk mengaktifkan pengambilan sampel sisi klien secara terprogram untuk pelacak:

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

Pilihan Tidak Ikut Tingkat Aplikasi

Anda dapat mengaktifkan tanda pilihan tidak ikut tingkat aplikasi yang akan menonaktifkan Google Analytics di seluruh aplikasi. Perhatikan bahwa tanda ini harus ditetapkan setiap kali aplikasi dimulai dan akan ditetapkan secara default ke NO.

Untuk mendapatkan setelan pilihan tidak ikut tingkat aplikasi, gunakan:

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

Untuk menetapkan pilihan tidak ikut tingkat aplikasi, gunakan:

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

Dalam penerapan standar, aplikasi mungkin memproses perubahan di SharedPreferences, dan memperbarui setelan memilih tidak ikut Google Analytics sebagaimana mestinya:

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

Pengujian dan Proses Debug

Google Analytics SDK untuk Android menyediakan alat untuk mempermudah pengujian dan proses debug.

Uji Coba

SDK menyediakan flag dryRun yang jika ditetapkan, akan mencegah data apa pun dikirim ke Google Analytics. Tanda dryRun harus ditetapkan setiap kali Anda menguji atau men-debug penerapan dan tidak ingin data pengujian muncul dalam laporan Google Analytics.

Untuk menetapkan flag uji coba:

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

Pencatat

Antarmuka Logger disediakan untuk menangani pesan yang berguna dari SDK pada tingkat panjang ini: error, warning, info, dan verbose.

SDK melakukan inisialisasi implementasi Logger standar, yang secara default hanya akan mencatat pesan peringatan atau error ke konsol. Pesan ini akan tersedia di logcat. Untuk menetapkan panjang Logger:

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

Implementasi kustom Logger juga dapat digunakan:

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

Contoh Lengkap

Contoh di bawah menunjukkan kode yang diperlukan untuk menginisialisasi penerapan Google Analytics dan mengirim satu tampilan layar.

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

Selanjutnya, tampilan layar diukur saat layar pertama ditampilkan kepada pengguna:

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