5

我正在使用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);
}
4

2 回答 2

8

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

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

事件在会话结束时发送,此时所有活动都已停止。您需要确保在测试设备上完全结束您的应用程序,然后才能看到任何事件到达服务器。如果您尚未执行此操作,则事件数据可能仍位于您的设备上而尚未发送。

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

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

免责声明:我在flurry工作:)

于 2013-09-07T00:54:25.520 回答
1

大家好,我用计时器构建类以将数据发送到 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;
    }
}
于 2014-01-20T10:18:57.833 回答