flurry记录会话但不记录事件(android)

时间:2013-09-05 15:32:43

标签: android flurry

我正在使用FLurry_3.2.2.jar,并且在每个Activity中都有这样的代码。它正确记录所有会话,但不记录事件。 (实际上,它从我的Home活动中记录了一次 一个 事件)

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

2 个答案:

答案 0 :(得分:8)

您的代码看起来正确。在这些情况下,我发现最可能的原因是您的完整会话未被发送到Flurry服务器。您可能正在获取初始会话报告,但会话在应用程序生命周期结束时关闭,并且仅在此时事件也会发送到服务器。

您需要确保在每项活动中都调用onStartSessiononEndSession。如果在任何活动(特别是onEndSession)上错过了这些活动,您的会话可能不会关闭,并且可能无法发送活动。

事件在会话结束时发送,此时所有活动都已停止。您需要确保在测试设备上完全结束您的应用程序,然后才能看到任何事件到达服务器。如果您还没有这样做,事件数据可能仍未保存在您的设备上。

Flurry SDK还会输出可能有助于缩小问题范围的日志。您可以使用FlurryAgent.setLogEnabled(true)FlurryAgent.setLogLevel(Log.DEBUG)启用日志记录。

如果您有更多问题,请随时与support@flurry.com联系。

免责声明:我忙着工作:)

答案 1 :(得分:1)

Hello Guys我使用计时器构建类来向Flurry Server发送数据。它解决了我所有的问题。

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