En esta guía para desarrolladores se describe cómo medir los tiempos de usuario con la versión 4 del SDK de Google Analytics para Android.
Descripción general
La medición de los tiempos de usuario ofrece un método nativo para calcular un periodo en Google Analytics. Puede ser útil, por ejemplo, para medir los tiempos de carga de los recursos.
Los tiempos de usuario incluyen los siguientes campos:
Nombre del campo |
Tipo |
Obligatorio |
Descripción |
Category |
String
| Sí |
La categoría del evento cronometrado |
Value |
long
| Sí |
La medición de tiempo en milisegundos |
Name |
String
| Sí |
El nombre del evento cronometrado |
Label |
String
| No |
Etiqueta del evento cronometrado |
El grueso de los datos de los tiempos de usuario se encuentra en el informe Tiempos de usuario de velocidad de la aplicación.
Implementación
Para enviar tiempos de usuario a Google Analytics, crea un método
TimingBuilder
y utiliza un objeto Tracker
para enviarlo.
// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
TrackerName.APP_TRACKER);
// Build and send timing.
t.send(new HitBuilders.TimingBuilder()
.setCategory(getTimingCategory())
.setValue(getTimingInterval())
.setVariable(getTimingName())
.setLabel(getTimingLabel())
.build());
Consulta la sección Configuración avanzada para obtener información detallada sobre el método getTracker
.
Consultar un fragmento de código desde la aplicación de ejemplo
El fragmento siguiente representa un ejemplo de Fragment
que envía unos tiempos de usuario:
package com.google.android.apps.mobileplayground;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import com.google.android.apps.mobileplayground.AnalyticsSampleApp.TrackerName;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
/**
* Class to exercise Timing hits.
*/
public class TimingFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.timing, container, false);
final Button sendButton = (Button) view.findViewById(R.id.timingSend);
sendButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
TrackerName.APP_TRACKER);
// Build and send timing.
t.send(new HitBuilders.TimingBuilder()
.setCategory(getTimingCategory())
.setValue(getTimingInterval())
.setVariable(getTimingName())
.setLabel(getTimingLabel())
.build());
}
});
final Button dispatchButton = (Button) view.findViewById(R.id.timingDispatch);
dispatchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Manually start a dispatch (Unnecessary if the tracker has a dispatch interval)
GoogleAnalytics.getInstance(getActivity().getBaseContext()).dispatchLocalHits();
}
});
return view;
}
private String getTimingCategory() {
return ((EditText) getView().findViewById(R.id.editTimingCategory)).getText().toString().trim();
}
private long getTimingInterval() {
String value =
((EditText) getView().findViewById(R.id.editTimingInterval)).getText().toString().trim();
if (value.length() == 0) {
return 0;
}
return Long.valueOf(value);
}
private String getTimingName() {
return ((EditText) getView().findViewById(R.id.editTimingName)).getText().toString().trim();
}
private String getTimingLabel() {
return ((EditText) getView().findViewById(R.id.editTimingLabel)).getText().toString().trim();
}
}