תצורה מתקדמת

במסמך הזה מפורטת סקירה כללית של כמה מתכונות ההגדרה המתקדמות של Google Analytics SDK v4 ל-Android.

סקירה

Google Analytics SDK v4 for Android מספק מחלקה Tracker להגדרה ולשליחה של נתונים ל-Google Analytics, ו-Singleton של GoogleAnalytics שמשמש כממשק לערכי התצורה הגלובליים של ההטמעה.

אתחול

כדי למדוד נתונים כלשהם, צריך לאתחל לפחות מכשיר מעקב אחד דרך הסינגלטון של 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 כדי להגדיר ערכים בהיט יחיד עם HitBuilders.ScreenViewBuilder. כדי להגדיר ערכים בכל ההיטים הבאים, צריך להשתמש באובייקט המעקב עצמו.

// 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.

החלת ערכים על התאמות מרובות

ערכים שמוגדרים ישירות בשירות המעקב יישארו קבועים ויוחלו על מספר היטים, כמו בדוגמה הזו:

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

יש להגדיר ישירות במכשיר המעקב רק ערכים שברצונך לשמור על מספר היטים. כדאי להגדיר שם מסך במכשיר מעקב, כי אפשר להחיל את אותו ערך על ההיטים הבאים של צפיות במסך ואירועי אירועים. עם זאת, לא מומלץ להגדיר שדה כמו סוג ההיט במעקב, מפני שסביר להניח שהוא ישתנה בכל היט.

שימוש במספר כלי מעקב

באפליקציה לנייד, ניתן להשתמש במספר כלי מעקב כדי לשלוח נתונים לנכסים שונים:


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() במכשיר המעקב.

דגימות

ניתן להפעיל דגימה בצד הלקוח כדי להגביל את מספר ההתאמות שנשלחות ל-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 בצד הלקוח, תוכלו למחוק את קובץ Client-ID.

מחיקת הקובץ gaClientId תאלץ את היצירה של מזהה לקוח חדש, וכל ההיטים הבאים ישתמשו במזהה הלקוח החדש. הנתונים הקודמים לא ישויכו למספר הלקוח החדש.

כדי למחוק את הקובץ gaClientId, משתמשים בשיטה Context.deleteFile:

context.deleteFile("gaClientId");

הסתר זהות IP

הפעלת הפונקציונליות לאנונימיזציה של כתובת ה-IP מורה ל-Google Analytics לבצע אנונימיזציה של פרטי ה-IP שנשלחים על ידי ה-SDK על ידי הסרת 8 התווים האחרונים של כתובת ה-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 תתעד יומן רישום בתג 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.