#android #google-analytics
#Android #google-analytics
Вопрос:
При использовании Google Analytics для Android, если я использую
tracker.start("UA-YOUR-ACCOUNT-HERE", 20, this)
затем каждые 20 секунд события будут отправляться автоматически, даже если я не делаю это вручную с помощью
tracker.dispatch()
Мой вопрос в том, что произойдет, если пользователь завершит работу моего приложения в течение 20 секунд?
будет ли оно отправлено?
или я должен отправлять все ожидающие события вручную, когда пользователь пытается выйти?
Комментарии:
1. Был ли какой-либо из ответов достаточным? Если это так, пожалуйста, отметьте один из них как принятый 🙂
Ответ №1:
Вам не нужно ничего делать — события сохраняются и будут объединены со следующей отправкой, которая произойдет в вашем приложении (предположительно, при следующем запуске приложения пользователем).
Обратите внимание, что серверы Analytics помечают время попадания на основе того, когда они получают данные, а не на основе того, когда событие фактически произошло — поэтому, если ваши пользователи используют приложение пару минут в день, посещения, которые произошли 10-го числа, могут отображаться в Analytics 11-го и т.д.
Обновление: Чтобы уточнить поведение при вызове tracker.stop(), в этот момент он не отправляет ожидающие события. Они остаются во внутренней базе данных sqlite и первыми отключаются при вызове отправки при следующем запуске вашего приложения. Причина, по которой они не запускаются при остановке трекера, заключается в том, что это добавило бы времени к уничтожаемой активности, делая приложение менее «быстрым» при выходе. Это также причина, по которой вам следует тщательно подумать перед отправкой в методе onDestroy.
Ответ №2:
tracker.stop() не отправляет данные. Мой совет — также поместить tracker.dispatch() в метод onDestroy()
@Override
protected void onDestroy() {
super.onDestroy();
tracker.dispatch();
// Stop the tracker when it is no longer needed.
tracker.stop();
}
Источник:
http://www.google.com/support/forum/p/Google Analytics/thread?tid=70a919f5b097f5dcamp;hl=en
Комментарии:
1. действительно ли это лучший способ? выполнение операций, но в фоновом режиме, когда пользователь уходит? мне кажется более логичным, что вызов stop принадлежит этому вызову, но не тому, который нужно отправить.
Ответ №3:
Рекомендуется остановить трекер, когда ваше приложение будет уничтожено, используя следующее;
@Override
protected void onDestroy() {
super.onDestroy();
// Stop the tracker when it is no longer needed.
tracker.stop();
}
Я бы предположил, что это приведет к отправке любых ожидающих событий.
Ответ №4:
Этот код поможет вам…..
public class TestActivity extends Activity {
GoogleAnalyticsTracker tracker;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tracker = GoogleAnalyticsTracker.getInstance();
// Start the tracker in manual dispatch mode...
tracker.startNewSession("UA-33332745-1", this);
setContentView(R.layout.main);
Button createEventButton = (Button)findViewById(R.id.NewEventButton);
createEventButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
tracker.trackEvent(
"Clicks", // Category
"Button", // Action
"clicked", // Label
77); // Value
}
});
Button createPageButton = (Button)findViewById(R.id.NewPageButton);
createPageButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp"
tracker.setCustomVar(1, "Medium", "Mobile App");
tracker.trackPageView("/testApplicationHomeScreen");
}
});
Button quitButton = (Button)findViewById(R.id.QuitButton);
quitButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});
Button dispatchButton = (Button)findViewById(R.id.DispatchButton);
dispatchButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
tracker.dispatch();
}
});
}
protected void onDestroy() {
super.onDestroy();
// Stop the tracker when it is no longer needed.
tracker.stopSession();
}
}