การกำหนดค่าขั้นสูง

เอกสารนี้แสดงภาพรวมเกี่ยวกับคุณลักษณะการกำหนดค่าขั้นสูงบางอย่างของ Google Analytics SDK v4 สำหรับ Android

ภาพรวม

Google Analytics SDK v4 สำหรับ Android มีคลาส Tracker สำหรับตั้งค่าและส่งข้อมูลไปยัง Google Analytics และซิงเกิล GoogleAnalytics ที่ทำหน้าที่เป็นอินเทอร์เฟซสำหรับการกำหนดค่าส่วนกลางของการใช้งาน

การเริ่มต้น

ก่อนที่จะวัดข้อมูลได้ คุณต้องเริ่มต้นเครื่องมือติดตามอย่างน้อย 1 รายการผ่านซิงเกิล GoogleAnalytics โดยระบุออบเจ็กต์ Context และรหัสพร็อพเพอร์ตี้ Google Analytics ดูรายละเอียดได้ที่ ข้อมูลอ้างอิงของ Google Analytics

การใช้ไฟล์การกำหนดค่า

นอกจากนี้ยังสามารถเริ่มต้นเครื่องมือติดตามโดยใช้ไฟล์การกำหนดค่าได้ด้วย เช่น

package com.google.android.apps.mobileplayground;

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import java.util.HashMap;

/**
 * An extension to Application class to provide tracker for analytics purposes. Having the tracker
 * instances here allows all the activities to access the same tracker instances. The trackers can
 * be initialised on startup or when they are required based on performance requirements.
 */
public class AnalyticsSampleApp extends Application {

  // The following line should be changed to include the correct property id.
  private static final String PROPERTY_ID = "UA-XXXXX-Y";

  /**
   * Enum used to identify the tracker that needs to be used for tracking.
   *
   * A single tracker is usually enough for most purposes. In case you do need multiple trackers,
   * storing them all in Application object helps ensure that they are created only once per
   * application instance.
   */
  public enum TrackerName {
    APP_TRACKER, // Tracker used only in this app.
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
  }

  HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

  public AnalyticsSampleApp() {
    super();
  }
  synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
          : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
              : analytics.newTracker(R.xml.ecommerce_tracker);
      mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
  }
}

การตั้งค่าและการส่งข้อมูล

ระบบจะส่งข้อมูลไปยัง Google Analytics โดยใช้เครื่องมือสร้างเพื่อตั้งค่าคู่พารามิเตอร์-ค่า โดยส่งผ่านเมธอด send ของเครื่องมือติดตาม

ตัวอย่างต่อไปนี้แสดงวิธีส่งการดูหน้าจอไปยัง Google Analytics โดยการสร้างข้อมูลพร็อพเพอร์ตี้แอปและเรียกใช้เมธอดการส่งเครื่องมือติดตาม

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

ไวยากรณ์ Ampersand ของ Measurement Protocol

คุณใช้ไวยากรณ์เครื่องหมายแอมเพอร์แซนด์ของ Measurement Protocol เพื่อกำหนดค่าใน Hit เดียวด้วย HitBuilders.ScreenViewBuilder ได้ หากต้องการกำหนดค่าสำหรับ Hit ที่ตามมาทั้งหมด ให้ใช้ออบเจ็กต์ตัวติดตาม

// Setting the content description field on a single hit using ampersand syntax.
tracker.send(new HitBuilders.ScreenViewBuilder()
  .set("&cd", "Home Screen")
  .build()
);

ดูรายการพารามิเตอร์ Measurement Protocol ที่มีอยู่ทั้งหมดได้ที่ข้อมูลอ้างอิงพารามิเตอร์ Measurement Protocol

การใช้ค่ากับ Hit หลายรายการ

ค่าใดๆ ที่ตั้งค่าไว้ในตัวติดตามโดยตรงจะคงอยู่และใช้กับ Hit หลายรายการ ดังตัวอย่างต่อไปนี้

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

// This event will also be sent with the most recently set screen name.
// Build and send an Event.
t.send(new HitBuilders.EventBuilder()
    .setCategory(getString(categoryId))
    .setAction(getString(actionId))
    .setLabel(getString(labelId))
    .build());

// Clear the screen name field when we're done.
t.setScreenName(null);

ควรตั้งค่าในเครื่องมือติดตามโดยตรงเฉพาะค่าที่คุณต้องการคงไว้ในหลายๆ Hit เท่านั้น การตั้งชื่อหน้าจอในเครื่องมือติดตามก็น่าจะเหมาะสม เนื่องจากสามารถใช้ค่าเดียวกันนี้กับการดูหน้าจอและ Event Hit ที่ตามมาได้ อย่างไรก็ตาม ไม่แนะนําให้ตั้งค่าช่อง เช่น ประเภท Hit บนเครื่องมือติดตาม เนื่องจากมีแนวโน้มว่าจะมีการเปลี่ยนแปลงตาม Hit แต่ละรายการ

การใช้ตัวติดตามหลายอย่าง

ในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ คุณสามารถใช้เครื่องมือติดตามหลายตัวเพื่อส่งข้อมูลไปยังพร็อพเพอร์ตี้ต่างๆ ได้ดังนี้


public class MyApp extends Application {

  public void initTrackers() {
    GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

    globalTracker = analytics.newTracker(R.xml.global_tracker);
    ecommerceTracker = analytics.newTracker(R.xml.ecommerce_tracker);
  }

  public static Tracker globalTracker;
  public static Tracker ecommerceTracker;

  ...
}

แม้ว่าแอปพลิเคชันบนอุปกรณ์เคลื่อนที่จะมีเครื่องมือติดตามได้หลายตัว แต่คุณสามารถใช้เครื่องมือติดตามเพียงตัวเดียวเพื่อรายงานข้อยกเว้นที่ตรวจไม่พบได้โดยเรียกใช้เมธอด enableExceptionReporting() ในอุปกรณ์ติดตาม

ทดสอบผลิตภัณฑ์

คุณสามารถเปิดใช้การสุ่มตัวอย่างฝั่งไคลเอ็นต์เพื่อจำกัดจำนวน Hit ที่ส่งไปยัง Google Analytics หากแอปมีผู้ใช้จำนวนมากหรือส่งข้อมูลปริมาณมากไปยัง Google Analytics การเปิดใช้การสุ่มตัวอย่างจะช่วยให้การรายงานไม่ขาดตอน

ตัวอย่างเช่น หากต้องการเปิดใช้การสุ่มตัวอย่างฝั่งไคลเอ็นต์ที่อัตรา 50% ให้ใช้พารามิเตอร์ต่อไปนี้ในไฟล์การกำหนดค่า

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

วิธีเปิดใช้การสุ่มตัวอย่างฝั่งไคลเอ็นต์แบบเป็นโปรแกรมสำหรับตัวติดตามมีดังนี้

mTracker.setSampleRate(50.0d);

การเลือกไม่ใช้ระดับแอป

คุณสามารถเปิดใช้แฟล็กการเลือกไม่ใช้ระดับแอปซึ่งจะปิดใช้ Google Analytics ทั่วทั้งแอป โปรดทราบว่าต้องตั้งค่าแฟล็กนี้ทุกครั้งที่แอปเริ่มทำงาน และจะมีค่าเริ่มต้นเป็น false

หากต้องการรับการตั้งค่าการเลือกไม่ใช้ระดับแอป ให้ใช้

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 Analytics ของผู้ใช้ปลายทาง

การลบไฟล์ gaClientId จะบังคับให้สร้างรหัสไคลเอ็นต์ใหม่และ Hit ที่ตามมาทั้งหมดจะใช้รหัสไคลเอ็นต์ใหม่ ข้อมูลก่อนหน้านี้จะไม่เชื่อมโยงกับรหัสลูกค้าใหม่

หากต้องการลบไฟล์ gaClientId ให้ใช้เมธอด Context.deleteFile ดังนี้

context.deleteFile("gaClientId");

ทำให้ IP ไม่ระบุตัวตน

การเปิดใช้ฟังก์ชันการลบข้อมูลระบุตัวบุคคลของ IP จะบอกให้ Google Analytics ลบข้อมูล IP ที่ SDK ส่งให้โดยลบอ็อกเท็ตสุดท้ายของที่อยู่ IP ก่อนพื้นที่เก็บข้อมูล

หากต้องการเปิดใช้ฟังก์ชันการลบข้อมูลระบุตัวบุคคลของ IP ให้ใช้พารามิเตอร์ต่อไปนี้ในไฟล์การกำหนดค่า

<string name="ga_anonymizeIp">true</string>

หากต้องการเปิดใช้ฟังก์ชันการลบข้อมูลระบุตัวบุคคลของ IP แบบเป็นโปรแกรมสำหรับเครื่องมือติดตาม ให้ใช้เมธอด setAnonymizeIp ดังนี้

mTracker.setAnonymizeIp(true)

คุณเรียกใช้เมธอด setAnonymizeIp ได้ทุกเมื่อ

การทดสอบและการแก้ไขข้อบกพร่อง

Google Analytics SDK v4 สำหรับ Android มีเครื่องมือที่ช่วยให้การทดสอบและแก้ไขข้อบกพร่องง่ายขึ้น

ทดลองเรียกใช้

SDK ให้แฟล็ก dryRun ซึ่งเมื่อตั้งค่าแล้วจะป้องกันไม่ให้มีการส่งข้อมูลใดๆ ไปยัง Google Analytics คุณควรตั้งค่าแฟล็ก dryRun เมื่อคุณทดสอบหรือแก้ไขข้อบกพร่องของการติดตั้งใช้งาน และไม่ต้องการให้ข้อมูลการทดสอบปรากฏในรายงาน Google Analytics

วิธีตั้งค่าสถานะการทดลองเรียกใช้

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

เครื่องบันทึก

Google Analytics จะบันทึกไปยัง Logcat ภายใต้แท็ก GAv4 โดยใช้ระบบ Android Log โดยค่าเริ่มต้น จะมีเฉพาะ ERROR เท่านั้น ระดับ WARN และ INFO จะเปิดใช้อยู่ หากต้องการเปิดใช้ระดับ DEBUG ให้เรียกใช้คำสั่ง adb ต่อไปนี้ในอุปกรณ์หรือโปรแกรมจำลอง

adb shell setprop log.tag.GAv4 DEBUG

หากต้องการดูเฉพาะข้อความ Google Analytics จาก Logcat ให้ใช้คำสั่งต่อไปนี้

adb logcat -v time -s GAv4

ดูข้อมูลเพิ่มเติมได้ที่ ข้อมูลอ้างอิงของตัวบันทึก Google Analytics