2010-11-09 7 views
7

Lorsque vous utilisez Google Analytics pour Android, si j'utiliseGoogle Analytics pour numéro Android avec dispatch()

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

puis toutes les 20 secondes, les événements seront envoyés automatiquement, même si je ne le faire manuellement à l'aide

tracker.dispatch() 

Ma question est, que se passe-t-il si l'utilisateur quitte mon application en 20 secondes? sera-t-il envoyé?

ou dois-je répartir manuellement tous les événements en attente lorsque l'utilisateur tente de quitter?

+0

Y avait-il des réponses suffisantes? Si oui, s'il vous plaît signaler un comme accepté :) –

Répondre

4

tracker.stop() ne distribue pas les données. Mon conseil est aussi mis tracker.dispatch() dans la méthode OnDestroy()

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

source: http://www.google.com/support/forum/p/Google%20Analytics/thread?tid=70a919f5b097f5dc&hl=en

+2

est-ce vraiment le meilleur moyen? effectuer des opérations, mais en arrière-plan, lorsque l'utilisateur quitte? il me semble plus logique que l'appel à l'arrêt soit là, mais pas celui à expédier. – olamotte

2

Il est recommandé d'arrêter le suivi lorsque votre application est détruite en utilisant ce qui suit; Je suppose que cela enverrait tous les événements en attente.

6

Vous ne devez pas faire anything- Les événements sont stockés et seront regroupés avec le prochain envoi qui se produit dans votre application (vraisemblablement la prochaine fois que l'utilisateur déclenche l'application). Notez que les serveurs Google Analytics horodatent le hit en fonction du moment où ils reçoivent les données, et non en fonction du moment où l'événement s'est produit. Ainsi, si vos utilisateurs utilisent l'application quelques minutes par jour, les visites effectuées le 10 Analytics dans le 11, etc.

Mise à jour: Pour clarifier le comportement quand tracker.stop() est appelée, elle ne expédition des événements en cours à ce moment-là. Ils restent dans une base de données sqlite interne et sont les premiers à sortir lorsqu'une répartition est appelée lors de la prochaine exécution de votre application. La raison pour laquelle ils ne sont pas déclenchés lorsque le tracker est arrêté est que cela ajouterait du temps à l'activité en cours de destruction, ce qui rendrait l'application moins «accrocheuse» à la sortie. C'est aussi la raison pour laquelle vous devriez réfléchir soigneusement avant de l'envoyer dans la méthode onDestroy.

1

Cela vous aide code .....

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(); 
     } 
    }