2013-09-05 1 views
5

J'utilise FLurry_3.2.2.jar, et avoir le code comme ceci dans chaque Activity. Il enregistre correctement toutes les sessions, mais n'enregistre pas les événements. (En fait, il connecté un événement, une fois, de mon activité Home)sessions journaux flurry mais pas les événements (android)

@Override 
protected void onStart() 
{ 
    super.onStart(); 
    FlurryAgent.onStartSession(this, Utilities.FlurryKey); 
    FlurryAgent.logEvent("Home"); 
} 
@Override 
protected void onStop() 
{ 
    super.onStop(); 
    FlurryAgent.onEndSession(this); 
} 
+2

Je faisais la même question sur Flurry_3.2.2 et ai maintenant avec Flurry_3.3.0 (cette version enregistre parfois des événements, mais pas toujours, la plupart du temps, il perd des événements). Dans notre projet, Flurry_3.2.1 et Flurry_3.2.0 ne fonctionnent que très bien. – kinORnirvana

+0

J'ai également trouvé 3.3.1 ne pas enregistrer les événements et a dû utiliser 3.2.1 à la place. – Ryan

Répondre

8

Votre code semble bon. Dans ces cas, je trouve que la cause la plus probable est que vos sessions complètes ne sont pas envoyées aux serveurs Flurry. Il se peut que vous obteniez le rapport de session initial, mais la session est fermée à la fin du cycle de vie des applications, et c'est seulement à ce moment-là que les événements sont également envoyés au serveur.

Vous devez vous assurer que onStartSession et onEndSession sont appelés pour chaque activité. Si ceux-ci sont manqués sur n'importe quelle activité (particulièrement onEndSession), votre session peut ne pas se fermer et les événements ne peuvent pas être envoyés.

Les événements sont envoyés à la fin de la session, lorsque toutes les activités sont arrêtées. Vous devez vous assurer de terminer complètement votre application sur votre périphérique de test avant de pouvoir vous attendre à voir des événements arriver sur le serveur. Si vous ne l'avez pas fait, les données de l'événement peuvent rester sur votre appareil sans avoir été envoyées.

Le SDK Flurry génère également des journaux qui peuvent aider à réduire le problème. Vous pouvez activer la journalisation avec FlurryAgent.setLogEnabled(true) et FlurryAgent.setLogLevel(Log.DEBUG).

N'hésitez pas à contacter [email protected] si vous avez d'autres questions.

Disclaimer: Je travaille à vague :)

+0

Je vais vérifier les choses. J'ai le sentiment que c'est lié au cycle de vie de mes activités. Dans certains cas, j'utilise le drapeau Intent.FLAG_ACTIVITY_CLEAR_TOP pour revenir à mon activité de lancement, qui nuke toutes les activités se trouvant entre les deux sur la pile. – Matt

+0

Ce qui est différent entre setLogEvents (boolean) et setLogEnabled (boolean). Je suis un peu confus à leur sujet. –

+2

setLogEnabled (boolean) est pour la consignation de la console dans LogCat, qui est activée uniquement à des fins de débogage. setLogEvents (boolean) active les méthodes logEvent, ce qui vous permet d'envoyer des données aux serveurs de propagation. C'est vrai par défaut, et il n'y a généralement aucune raison de le désactiver (sauf si vous devez désactiver rapidement la journalisation des événements Flurry à des fins de test) –

1

Bonjour les gars Je construis classe avec minuterie pour envoyer des données à Flurry Server. Cela a résolu tous mes problèmes.

public class TimerFlurry { 

    private static final String TAG = "TIMER FLURRY"; 
    private Handler handler = new Handler(); 
    private Runnable runnable = null; 
    private boolean stop = false; 

    public TimerFlurry(final Context ctx) { 
     Log.d(TAG, "TimerFlurry.TimerFlurry()"); 

     runnable = new Runnable() { 

      boolean inicializou = false; 

      @Override 
      public void run() { 
       if (stop) { 
        Log.d(TAG, "parou Handler!!!"); 
        FlurryAgent.onEndSession(ctx); 
        inicializou = false; 
        return; 
       } 

       Log.d(TAG, "!!!!!!!!!!!!!!!!!!! .run() now: " + new Date()); 
       if (!inicializou) { 
        Log.d(TAG, ">>>>> inicializou Flurry Session!!!"); 
        FlurryAgent.setContinueSessionMillis(5000); 
        FlurryAgent.onStartSession(ctx, "XXXXXXXXXXXXXXXXXXXX"); 
        FlurryAgent.setLogEnabled(true); 
        FlurryAgent.setLogLevel(Log.DEBUG); 
        inicializou = true; 
        handler.postDelayed(runnable, 60000); 
       } else { 
        Log.d(TAG, "!!!!!!!!!!!!! finalizou Flurry Session!!!"); 
        FlurryAgent.onEndSession(ctx); 
        inicializou = false; 
        handler.postDelayed(runnable, 10000);// inicializa em 10 s 
                  // novamente para 
                  // dar o timeout do 
                  // flurry 
       } 
      } 
     }; 

     handler.postDelayed(runnable, 5000); 
    } 

    public void stop() { 
     stop = true; 
    } 
} 
Questions connexes