2013-09-05 23 views
5

FLurry_3.2.2.jar kullanıyorum ve bu kodun her birinde Activity var. Tüm oturumları doğru bir şekilde kaydeder, ancak olayları günlüğe kaydetmez.Flurry oturumları günlüğe kaydeder ama değil (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

ben (bazen her zaman olmasa da çoğu zaman olayları kaybeder bu sürümü olayları kaydeder) Flurry_3.2.2 üzerinde aynı sorunu yaşıyordu ve Flurry_3.3.0 ile şimdi yaşıyorum. Flurry_3.2.1 ve Flurry_3.2.0 projemizde sadece iyi çalışıyoruz. – kinORnirvana

+0

Ayrıca 3.3.1 olayları günlüğe kaydetmedi ve bunun yerine 3.2.1 kullanmak zorunda kaldım. – Ryan

cevap

8

Kodunuz doğru bakar (Aslında benim Home etkinlikten, bir olayı, bir kez kaydedilir). Bu gibi durumlarda, en olası sebebin, tüm oturumlarınızın Flurry sunucularına gönderilmemesi olduğunu buldum. İlk oturum raporunu alıyor olabilirsiniz, ancak uygulama yaşam döngüsünün sonunda oturum kapalıdır ve yalnızca olayların sunucuya gönderildiği noktadadır.

Her etkinlikte onStartSession ve onEndSession öğelerinin çağrıldığından emin olmanız gerekir. Bunlar herhangi bir etkinlikte (özellikle onEndSession) kaçırılırsa, oturumunuz kapanmayabilir ve olaylar gönderilemeyebilir.

Tüm etkinlikler durduğunda, oturumun sonunda olaylar gönderilir. Sunucunuza ulaşan herhangi bir etkinliği görmeyi beklemeden önce, uygulamanızı test cihazınızda tamamıyla sona erdirdiğinizden emin olmanız gerekir. Bunu yapmadıysanız, olay verileri gönderilmeden cihazınızda hala oturmuş olabilir.

Flurry SDK, aynı zamanda, sorunun daraltılmasına yardımcı olabilecek günlükleri de çıkarır. FlurryAgent.setLogEnabled(true) ve FlurryAgent.setLogLevel(Log.DEBUG) ile günlüğe kaydetmeyi etkinleştirebilirsiniz.

Daha fazla sorunuz varsa [email protected] adresine ulaşmaktan çekinmeyin.

Yasal Uyarı: Ben Flurry Server veri göndermek için zamanlayıcı ile sınıfını inşa flurry :)

+0

Bir şeyler kontrol edeceğim. Faaliyetlerimin yaşam döngüsü ile ilgili bir his var. Bazı durumlarda, yığınta aralarında oturan tüm etkinlikleri geçersiz kılan fırlatma etkinliğime geri dönmek için Intent.FLAG_ACTIVITY_CLEAR_TOP bayrağını kullanıyorum. – Matt

+0

SetLogEvents (boolean) ve setLogEnabled (boolean) arasındaki farklar. Onlar hakkında biraz kafam karıştı. –

+2

setLogEnabled (boolean), yalnızca hata ayıklama amaçları için etkinleştirilen LogCat'e konsol günlüğü için kullanılır. setLogEvents (boolean), logEvent yöntemlerini etkinleştirir, böylece veriyi flüstü sunucularına gönderebilirsiniz. Varsayılan olarak doğrudur ve genellikle devre dışı bırakmak için bir neden yoktur (test amaçlı olarak Flurry olay günlüğünü hızlı bir şekilde devre dışı bırakmanız gerekmedikçe) –

1

Merhaba Guys çalışıyorum. Bütün sorunlarım çözüldü.

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; 
    } 
} 
İlgili konular