我正在使用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);
}
答案 0 :(得分:8)
您的代码看起来正确。在这些情况下,我发现最可能的原因是您的完整会话未被发送到Flurry服务器。您可能正在获取初始会话报告,但会话在应用程序生命周期结束时关闭,并且仅在此时事件也会发送到服务器。
您需要确保在每项活动中都调用onStartSession
和onEndSession
。如果在任何活动(特别是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;
}
}