שיגור

במאמר הזה נסביר איך לנהל שליחת נתונים ל-Google Analytics באמצעות Google Analytics SDK v4 ל-Android.

סקירה

נתונים שנאספים באמצעות Google Analytics SDK v4 עבור Android מאוחסנים באופן מקומי לפני שהם נשלחים בשרשור נפרד אל Google Analytics.

יש לשלוח ולקבל את הנתונים עד 4:00 ביום המחרת, באזור הזמן המקומי של כל תצוגה מפורטת. נתונים שיתקבלו מאוחר יותר לא יופיעו בדוחות. לדוגמה, אם התאמה נמצאת בתור מקומית בשעה 23:59, יש לשלוח אותה בתוך 4 שעות, עד 3:59, כדי שהיא תופיע בדוחות. מצד שני, התאמה שנמצאת בתור בשעה 00:00 צריכה להישלח תוך 28 שעות, כלומר 3:59 של היום למחרת, על מנת שהיא תופיע בדוחות.

שליחה תקופתית

כברירת מחדל, הנתונים נשלחים מ-Google Analytics SDK v4 ל-Android כל 30 דקות.

כדי להגדיר את תקופת השליחה באופן פרוגרמטי:

// Set the dispatch period to 90 seconds.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(90);

כדי להגדיר את תקופת השליחה בקובץ התצורה של ה-XML:

<integer name="ga_dispatchPeriod">30</integer>

הגדרת ערך של אפס או שלילי תשבית את השליחה התקופתית, מה שיחייב להשתמש בשליחה ידנית אם תרצו לשלוח נתונים ל-Google Analytics.

// Disable periodic dispatch by setting dispatch period to a value less than 1.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(0);

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

שליחה ידנית

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

GoogleAnalytics.getInstance(this).dispatchLocalHits();

שליחה ברקע

כדי להפעיל שליחה ברקע באפליקציות שפועלות במכשירים שאינם של Google Play, בקובץ התצורה ApplicationManifest.xml:

  • קבלת ההרשאה WAKE_LOCK.
  • רישום AnalyticsReceiver.
  • רישום AnalyticsService.

למשל:

<manifest>
  <!-- ... -->

  <!-- Get permission for reliable local dispatching on non-Google Play devices. -->
  <uses-permission android:name="android.permission.WAKE_LOCK" />

  <application name="com.example.MyApp">
    <!-- Register AnalyticsReceiver and AnalyticsService to support background
         dispatching on non-Google Play devices. -->
    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
      android:enabled="true">
      <intent-filter>
        <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
      </intent-filter>
    </receiver>
    <service android:name="com.google.android.gms.analytics.AnalyticsService"
      android:enabled="true"
      android:exported="false"/>

    <!-- ... -->
  </application>
</manifest>