2010-11-09 2 views
7

При использовании Google Analytics для Android, если я используюGoogle Analytics для Android вопрос с отправкой()

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

затем через каждые 20 секунд, события будут отправлены автоматически, даже если я не делаю это вручную с помощью

tracker.dispatch() 

Мой вопрос: что произойдет, если пользователь покинет мое приложение в течение 20 секунд? будет отправлен?

или мне нужно отправлять все ожидающие события вручную, когда пользователь пытается выйти?

+0

Были ли ответы достаточно? Если да, отметьте один из них как принято :) –

ответ

4

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%20Analytics/thread?tid=70a919f5b097f5dc&hl=en

+2

это действительно лучший способ? выполнение операций, но в фоновом режиме, когда пользователь уходит? мне кажется более логичным, что вызов прекратить принадлежит, но не тот, который нужно отправить. – olamotte

2

Рекомендуется остановить трекер, когда ваше приложение будет уничтожено, используя следующее:

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

Я бы предположил, что это отправит любые ожидающие события.

6

Вы не должны делать anything- события откладываются и будут объединены со следующей отправкой, которая появляется в вашем приложении (предположительно, в следующий раз, когда пользователь запускает приложение).

Обратите внимание, что серверы Google Analytics отмечают отметку времени на основе того, когда они получают данные, а не на основании того, когда произошло событие. Поэтому, если ваши пользователи используют приложение в течение пары минут в день, посещение, которое произошло на 10-м, может показать в Analytics на 11-м и т.д.

Update: Для уточнения на поведении при tracker.stop() вызываются, он не диспетчерских ожидающих событий в этой точке. Они остаются во внутренней базе данных sqlite и первыми выходят, когда вызывается отправка в следующем запуске вашего приложения. Причина, по которой они не запускаются, когда трекер остановлен, заключается в том, что он добавит время для уничтожения Действия, что сделает приложение менее «быстрым» при выходе. Это также причина, по которой вам следует тщательно подумать, прежде чем отправлять в метод onDestroy.

1

Этот код поможет .....

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(); 
     } 
    } 
Смежные вопросы