2013-09-05 12 views
5

私はFLurry_3.2.2.jarを使用しており、それぞれActivityにこのようなコードがあります。すべてのセッションを正しく記録しますが、イベントは記録しません。セッションはログアウトしますが、イベントは記録されません(アンドロイド)

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

私は(時々、常にではないが、ほとんどの時間は、それがイベントを失い、このバージョンでは、イベントをログに記録します)Flurry_3.2.2で同じ問題を抱えていたとFlurry_3.3.0で今それを持っています。 プロジェクトFlurry_3.2.1とFlurry_3.2.0ではうまく動作します。 – kinORnirvana

+0

私は3.3.1がイベントをログに記録せず、代わりに3.2.1を使用しなければならないことも発見しました。 – Ryan

答えて

8

あなたのコードが右に見えます(実際に、それは私のHome活動から、イベント、1時間をログに記録しました)。このような場合は、あなたのフルセッションがFlurryサーバーに送信されていない可能性が最も高いとわかります。最初のセッションレポートが表示されている可能性がありますが、セッションはアプリのライフサイクルの終わりに閉じられ、その時点でのみイベントがサーバーに送信されます。

すべてのアクティビティでonStartSessiononEndSessionが呼び出されていることを確認する必要があります。これらがすべてのアクティビティ(特にonEndSession)で失われた場合、セッションが終了せず、イベントが送信されないことがあります。

イベントは、すべてのアクティビティが停止したセッションの最後に送信されます。サーバーにイベントが到着するのを待つ前に、テストデバイスでアプリケーションを完全に終了させる必要があります。これを行わなかった場合でも、イベントデータは送信されずにデバイスに残っている可能性があります。

Flurry SDKは、問題の絞り込みに役立つログも出力します。 FlurryAgent.setLogEnabled(true)FlurryAgent.setLogLevel(Log.DEBUG)でログを有効にすることができます。

ご不明な点がございましたら[email protected]までお気軽にお問い合わせください。

免責事項:私は突風で働く:)

+0

私は物事を二重チェックします。私は自分の活動のライフサイクルに関連する感情を持っています。場合によっては、Intent.FLAG_ACTIVITY_CLEAR_TOPフラグを使用して起動アクティビティに戻ります。このアクティビティは、スタック上にあるすべてのアクティビティを中断します。 – Matt

+0

setLogEvents(boolean)とsetLogEnabled(boolean)の違いは何ですか?私はそれらについてちょっと混乱しています。 –

+2

setLogEnabled(boolean)は、LogCatへのコンソールログ用です。これは、デバッグ目的でのみ有効です。 setLogEvents(boolean)はlogEventメソッドを有効にするので、データをFlurryサーバーまで送信できます。これはデフォルトでは真であり、通常はそれを無効にする理由はありません(テスト目的でFlurryイベントログを素早く無効にする必要がない場合) –

1

こんにちはGuysは、私はフラリーサーバーにデータを送信するためにタイマーを持つクラスを構築します。それは私のすべての問題を解決しました。

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; 
    } 
} 
関連する問題