调度

本文档将介绍如何使用 Android 版 Google Analytics(分析)SDK v4 管理将数据调度到 Google Analytics(分析)的工作。

概览

使用 Android 版 Google Analytics(分析)SDK v4 收集的数据会先存储在本地,然后才会在单独的线程中调度到 Google Analytics(分析)。

数据必须在各数据视图本地时区的次日凌晨 4 点之前进行调度和接收。送达时间晚于此时限的数据将不会出现在报告中。例如,如果某次匹配在本地时间晚上 11:59 加入队列,则必须在 4 个小时内(凌晨 3:59 之前)调度到 Google Analytics(分析),否则该匹配无法出现在报告中。但是,如果某次匹配在凌晨 00:00 加入队列,则需要在 28 小时内(即次日凌晨 3:59 之前)调度到 Google Analytics(分析)才能出现在报告中。

定期调度

默认情况下,Android 版 Google Analytics(分析)SDK v4 会每隔 30 分钟调度一次数据。

要以程序化方式设置调度周期,请使用以下代码:

// Set the dispatch period in seconds.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(30);

要在 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>