2013-09-05 7 views
5

Ich verwende FLurry_3.2.2.jar, und haben Code wie folgt in jedem Activity. Es protokolliert alle Sitzungen korrekt, protokolliert jedoch keine Ereignisse. (Eigentlich angemeldet es ein Ereignis, eine Zeit, aus meiner Home Aktivität)hurry Protokolle Sitzungen aber nicht Ereignisse (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

Ich hatte das gleiche Problem auf Flurry_3.2.2 und habe es jetzt mit Flurry_3.3.0 (diese Version protokolliert manchmal Ereignisse, aber nicht immer, es die meiste Zeit verliert Ereignisse). In unserem Projekt Flurry_3.2.1 und Flurry_3.2.0 funktionieren nur gut. – kinORnirvana

+0

Ich fand auch, dass 3.3.1 Ereignisse nicht protokollieren würde und stattdessen 3.2.1 verwenden musste. – Ryan

Antwort

8

Ihr Code richtig aussieht. In diesen Fällen ist die wahrscheinlichste Ursache, dass Ihre vollständigen Sitzungen nicht an die Flurry-Server gesendet werden. Möglicherweise erhalten Sie den ersten Sitzungsbericht, die Sitzung wird jedoch am Ende des Anwendungslebenszyklus geschlossen, und erst dann werden Ereignisse an den Server gesendet.

Sie müssen sicherstellen, dass onStartSession und onEndSession bei jeder Aktivität aufgerufen werden. Wenn diese bei einer Aktivität übersehen werden (insbesondere bei EndSession), wird Ihre Sitzung möglicherweise nicht geschlossen und die Ereignisse werden möglicherweise nicht gesendet.

Ereignisse werden am Ende der Sitzung gesendet, wenn alle Aktivitäten gestoppt wurden. Sie müssen sicherstellen, dass Sie Ihre App vollständig auf Ihrem Testgerät beenden, bevor Sie erwarten können, dass Ereignisse auf dem Server ankommen. Wenn Sie dies noch nicht getan haben, sitzen die Ereignisdaten möglicherweise noch auf Ihrem Gerät, ohne gesendet worden zu sein.

Das Flurry SDK gibt auch Protokolle aus, die bei der Eingrenzung des Problems helfen können. Sie können die Protokollierung mit FlurryAgent.setLogEnabled(true) und FlurryAgent.setLogLevel(Log.DEBUG) aktivieren.

Wenn Sie weitere Fragen haben, wenden Sie sich bitte an [email protected]

Disclaimer: Ich bei Flut arbeiten :)

+0

Ich werde die Dinge überprüfen. Ich habe das Gefühl, dass es sich auf den Lebenszyklus meiner Aktivitäten bezieht. In einigen Fällen benutze ich das Flag Intent.FLAG_ACTIVITY_CLEAR_TOP, um zu meiner Startaktivität zurückzukehren, die alle dazwischen liegenden Aktivitäten auf dem Stapel bündelt. – Matt

+0

Unterschiede zwischen setLogEvents (boolean) und setLogEnabled (boolean). Ich bin ein wenig verwirrt über sie. –

+2

setLogEnabled (boolean) dient zur Konsolenprotokollierung in LogCat, das nur für Debugging-Zwecke aktiviert ist. setLogEvents (boolean) aktiviert die logEvent-Methoden, sodass Sie Daten an die Flurry-Server senden können. Dies ist standardmäßig der Fall und es gibt normalerweise keinen Grund, sie zu deaktivieren (es sei denn, Sie müssen die Flurry-Ereignisprotokollierung zu Testzwecken schnell deaktivieren). –

1

Hallo Jungs, die ich bauen Klasse mit Timerdaten an Flurry Server zu senden. Es hat alle meine Probleme gelöst.

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; 
    } 
} 
Verwandte Themen