2010-11-09 11 views
7

Podczas korzystania z Google Analytics dla Androida, jeśli mogę użyćGoogle Analytics dla Androida problem z wysyłką()

tracker.start("UA-YOUR-ACCOUNT-HERE", 20, this)

następnie co 20 sekund, zdarzenia będą wysyłane automatycznie, nawet jeśli dont zrobić to ręcznie za pomocą

tracker.dispatch() 

Moje pytanie brzmi: co się stanie, jeśli użytkownik opuści aplikację w ciągu 20 sekund? zostanie wysłany?

Czy muszę wysyłać wszystkie oczekujące zdarzenia ręcznie, gdy użytkownik próbuje wyjść?

+0

Czy któreś z odpowiedzi są wystarczające? Jeśli tak, zgłoś flagę jako zaakceptowaną :) –

Odpowiedz

4

tracker.stop() nie wysyła danych. Moja rada jest, aby również umieścić tracker.dispatch() w metodzie onDestroy()

@Override 
    protected void onDestroy() { 
    super.onDestroy(); 
    tracker.dispatch(); 
    // Stop the tracker when it is no longer needed. 
    tracker.stop(); 
    } 

źródło: http://www.google.com/support/forum/p/Google%20Analytics/thread?tid=70a919f5b097f5dc&hl=en

+2

czy to naprawdę najlepszy sposób? wykonywania operacji, ale w tle, kiedy użytkownik wychodzi? wydaje mi się bardziej logiczne, że wezwanie do zatrzymania należy do niego, ale nie do wysłania. – olamotte

2

Zaleca się, aby zatrzymać narzędzie do śledzenia, gdy aplikacja zostanie zniszczona przy użyciu następujących elementów;

@Override 
    protected void onDestroy() { 
    super.onDestroy(); 
    // Stop the tracker when it is no longer needed. 
    tracker.stop(); 
    } 

Założę się, że to spowoduje wysłanie każdego zdarzenia oczekującego.

6

Nie musisz robić nic tu Zdarzenia przechowywane i zostaną połączone z następną wysyłką, która ma miejsce w Twojej aplikacji (prawdopodobnie następnym razem, gdy użytkownik uruchomi aplikację).

Należy pamiętać, że serwery Analytics sygnalizują czas trafienia w oparciu o datę otrzymania danych, a nie o to, kiedy wydarzenie faktycznie miało miejsce - więc jeśli użytkownicy korzystają z aplikacji przez kilka minut dziennie, odwiedziny, które miały miejsce w dniu 10 maja, mogą być wyświetlane w Analytics na 11 itp

Aktualizacja: Aby wyjaśnić na zachowanie podczas tracker.stop() jest wywoływana, to nie wysyłkowe oczekiwaniu wydarzeń w tym punkcie. Pozostają one w wewnętrznej bazie danych sqlite i są pierwszymi, które wychodzą, gdy wywołanie zostanie wywołane w następnym uruchomieniu aplikacji. Powodem, dla którego nie są uruchamiane po zatrzymaniu trackera, jest dodanie czasu do niszczonej aktywności, dzięki czemu aplikacja będzie mniej odczuwalna podczas wyjścia. Jest to również powód, dla którego powinieneś dokładnie przemyśleć przed wysłaniem do metody onDestroy.

1

Ten kod pomóc .....

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(); 
     } 
    } 
Powiązane problemy