Flurry事件完全不显示

26

我想向我的应用程序添加一些分析功能,因此我在Flurry上创建了一个帐户,并将他们的SDK添加到我的项目中。然后我记录了一些事件,普通事件和定时事件。

到目前为止,没有什么特别的 :) 但即使过了两天,我仍然看不到这些事件在Flurry的控制台中。我可以看到会话数,所以我想我的应用程序实际上正在发送信息。但是没有事件。

有什么想法吗? 我对代码没有做任何奇怪的事情,我使用我的ID进行注册(根据我之前说的是正确的)

[FlurryAnalytics startSession:flurryKey];

使用以下方式记录和记录事件:

[FlurryAnalytics logEvent:@"MyEvent"];

1
花了两天时间,然后我才能开始看到事件。 - david72
5个回答

29

除了设置之外,理解Flurry如何记录事件非常重要。感谢一些评论,我在调试模式下运行了一些测试。您可以通过以下方式打开它:

[Flurry setDebugLogEnabled:YES];

当我的应用启动时,它会设置用户ID和一些页面浏览记录。这是日志输出:

    2013-05-27 12:19:00.636 MyApp[8492:907] Flurry: Starting session on Agent Version [115] 
    2013-05-27 12:19:00.659 MyApp[8492:907] Flurry: setUserID[<cut>]
    2013-05-27 12:19:00.684 MyApp[8492:120b] FlurrySession: Add session with startTime[2013-05-27 15:46:22 +0000] to saved sessions
    2013-05-27 12:19:00.704 MyApp[8492:120b] FlurrySession: Add crashed former session
    2013-05-27 12:19:00.713 MyApp[8492:120b] FlurrySession: Event logging enabled[1]
    2013-05-27 12:19:00.714 MyApp[8492:120b] FlurrySession: Session reports on close enabled[1]
    2013-05-27 12:19:00.715 MyApp[8492:120b] FlurrySession: Session reports on pause enabled[0]
    2013-05-27 12:19:00.716 MyApp[8492:120b] FlurrySession: Crash reporting enabled[0]
    2013-05-27 12:19:00.717 MyApp[8492:120b] FlurrySession: set pushToken [(null)], _pushToken = [(null)]
    2013-05-27 12:19:00.719 MyApp[8492:907] FlurryPageViewDelegate: delegate[(null)] created
    2013-05-27 12:19:00.720 MyApp[8492:907] FlurryPageViewDelegate: delegate[(null)] created
    2013-05-27 12:19:00.736 MyApp[8492:120b] FlurrySession: Initialized session from scratch with startTime[2013-05-27 16:19:00 +0000]
    2013-05-27 12:19:00.737 MyApp[8492:120b] FlurrySession: Created active session with API[<cut>]
    2013-05-27 12:19:00.738 MyApp[8492:120b] FlurrySession: Session reports on close enabled[1]
    2013-05-27 12:19:00.739 MyApp[8492:120b] FlurrySession: Session reports on pause enabled[1]
    2013-05-27 12:19:00.740 MyApp[8492:120b] FlurrySession: Event logging enabled[1]
    2013-05-27 12:19:00.741 MyApp[8492:120b] FlurrySession: Crash reporting enabled[0]
    2013-05-27 12:19:00.742 MyApp[8492:120b] FlurrySession: Sending sessions to server, include current NO
    2013-05-27 12:19:00.763 MyApp[8492:120b] FlurrySession: Initial timestamp[2013-02-20 00:46:06 +0000] from saved source
    2013-05-27 12:19:00.780 MyApp[8492:907] FlurryPageViewDelegate: delegate[(null)] created
    2013-05-27 12:19:01.192 MyApp[8492:120b] Flurry: start background task
    2013-05-27 12:19:01.202 MyApp[8492:120b] FlurrySession: Scheduled send 1 session(s).
    2013-05-27 12:19:01.215 MyApp[8492:120b] FlurrySession: Set userID[<cut>]
    2013-05-27 12:19:01.217 MyApp[8492:120b] FlurrySession: dealloc session
    2013-05-27 12:19:04.857 MyApp[8492:907] FlurrySession: networkStatusChanged to  reachable
    2013-05-27 12:19:05.616 MyApp[8492:907] Flurry: HTTP connection delegate received response[<NSHTTPURLResponse: 0x1c5a1310>]
    2013-05-27 12:19:05.624 MyApp[8492:7f03] FlurrySession: async http response code: 200, id [D1038462-66E2-48AE-8304-83A24B0E26EB]
    2013-05-27 12:19:05.634 MyApp[8492:7f03] Flurry: stop background task

Flurry自动发送了初始会话设置,因此您将在分析页面上看到会话(在上面的部分,异步http响应代码:200表示成功)。 您会注意到它说添加崩溃的前一次会话。这是因为我在XCode中单击了Stop并杀死了应用程序。 这样并没有允许Flurry记录任何事件! 它显示了事件记录,但没有发送会话计划:

    2013-05-27 12:19:41.184 MyApp[8492:aa07] FlurrySession: Recording event eventName[Doc Save] with parameters[{myparams = "xyz";
    }] complete

要引发Flurry发送已记录的事件,您需要首先在设备上单击Home按钮。 一旦您单击Home,您将在日志中看到以下内容:

    2013-05-27 12:21:15.884 MyApp[8492:a30f] FlurrySession: Pause session with pauseTime[2013-05-27 16:21:15 +0000]
    2013-05-27 12:21:15.885 MyApp[8492:a30f] FlurrySession: Finish session with endTime[2013-05-27 16:21:15 +0000]
    2013-05-27 12:21:15.887 MyApp[8492:a30f] FlurrySession: ending all unterminated timed events with _endTime[2013-05-27 16:21:15 +0000]...
    2013-05-27 12:21:15.890 MyApp[8492:a30f] FlurrySession: ...finished ending un-ended timed events.
    2013-05-27 12:21:15.891 MyApp[8492:a30f] FlurrySession: Sending sessions to server, include current YES
    2013-05-27 12:21:15.900 MyApp[8492:a30f] FlurrySession: Initial timestamp[2013-02-20 00:46:06 +0000] from saved source
    2013-05-27 12:21:15.914 MyApp[8492:a30f] Flurry: start background task
    2013-05-27 12:21:15.919 MyApp[8492:a30f] FlurrySession: Scheduled send 1 session(s).
    2013-05-27 12:21:16.729 MyApp[8492:907] Flurry: HTTP connection delegate received response[<NSHTTPURLResponse: 0x1c5ac0b0>]
    2013-05-27 12:21:17.090 MyApp[8492:9c0b] FlurrySession: async http response code: 200, id [BB7CE5C1-D9C4-412F-9A41-6A838174B8FC]
    2013-05-27 12:21:17.293 MyApp[8492:9c0b] Flurry: stop background task

然后你可以在XCode中使用Stop来停止应用程序


2
还有一件需要注意的事情。我在其中一个事件中有超过10个参数,但该事件本身并没有被记录,与文档相反。我已经向Flurry支持提交了一个错误报告。 "任何事件最多只能关联10个参数名称。发送超过10个参数名称的单个事件将导致该事件未记录任何参数。" - ski_squaw
此外,我发现没有任何“暂停会话”和“结束会话”的日志记录,而且我的日志记录级别设置为FlurryLogLevelAll。有人见过这种情况吗? - dredful
最后,我在 [Flurry startSession:appSettings.flurryAppId]; 之前添加了 [Flurry setSessionContinueSeconds:2];,以便在暂停 2 秒后会话应该重新开始。无论从后台返回多长时间,Flurry 代码都不会结束会话。 - dredful
4
我相信我找到了问题所在。在4.2.2版本中,新增了一个+ (void)setBackgroundSessionEnabled:(BOOL)setBackgroundSessionEnabled; 方法,如果您的应用程序有任何UIBackgroundModes,则将其设置为“是”。我们的应用程序在后台使用GPS,因此当进入后台时不会发布。当我强制调用 [Flurry setBackgroundSessionEnabled:NO]; 时,在按Home键时它会发送数据。不确定这种情况是否能够正常工作。我们并不需要使用Flurry来更新GPS位置,因此现在可以对我们起作用。感谢您的帮助! - dredful
2
谢谢@dredful,setBackgroundSessionEnabled是我的问题所在。我们还使用了后台模式,新的4.2.2版本由于此原因没有发送任何数据。将setBackgroundSessionEnabled手动设置为NO后,数据再次开始流动。 - Skabber
显示剩余5条评论

14

我认为你所说的"Flurry Events"指的是FlurryAnalytics。

选项1:

请检查你的密钥(key)是否正确,并且已经集成了最新的iOS Flurry SDK版本。

选项2:

请确保你已经正确引用了FlurryAnalytics.hlibFlurryAnalytics.a

同时,检查一下是否已将libFlurryAnalytics.a添加到目标设置(Target Settings)中的链接二进制文件库(Link Binaries to Libraries)中。

选项3:

尝试使用你的登录凭据登录其网站,并等待更多的时间。

此外,据我所知,它不是实时服务。需要大约6-8小时才能显示记录结果。

否则,你需要联系Flurry Analytics团队,因为这是一个非常简单的API,开发人员很难出现问题。

希望这能帮助到你。


2
现在我可以在仪表板上看到今天早上的会话,但仍然没有事件... - Thomas Castel
2
顺便说一句,[FlurryAnalytics setDebugLogEnabled:YES]; 告诉我一切“正常”,日志已发送,应用程序接收到200的状态代码。 - Thomas Castel
19
哦,等等……我看到可能就是问题所在。实际上,它只有在应用程序转到后台时才发送事件,但由于我也在进行调试,我从XCode中杀死了应用程序以停止它。所以应用程序实际上从未进入后台!几个小时后我会看看是否真的是这样。顺便说一下,谢谢你花时间回答我的问题! - Thomas Castel
我已经核实了所有内容,现在已经等待了三天,但没有出现任何事件。 - Gregory Higley
@GregoryHigley,请通过Flurry文档验证您是否已正确地将Flurry配置到您的应用程序中。老实说,自2012年以来我就没有再关注它了。 - Parth Bhatt
显示剩余11条评论

6

如果您想在后台模式下跟踪事件,必须将其设置为YES,并通过调用[Flurry pauseBackgroundSession]方法明确告诉Flurry何时会话被认为已暂停/结束。 - Jens Schwarzer

3
我遇到了同样的问题,从 support@flurry.com 得到以下反馈:
任何被删除的事件都将被列入黑名单,除非由 Flurry admin 进行取消删除操作,否则不会再次进行跟踪。
您是否期望删除的 55 个事件重新显示?如果是,则它们已被删除,将不会再次进行跟踪。
因此,我在 dev.flurry.com 的管理部分删除了我的应用程序,并创建了一个同名的新应用程序,但它具有新的 API_KEY。之后,我所有的 55 个事件都正确地出现在 Flurry Analytics 的监视器中,并且包含所有参数。

0

一些新的Flurry事件未被记录的原因之一可能是达到了(不同)Flurry事件允许的最大数量限制。如this answer所述,限制为300个自定义事件。如果达到此限制,新事件将被Flurry系统简单地忽略,但不幸的是,这个问题不会在Xcode日志中显示。

如果这是您的问题的根本原因,则以下是一些建议:

  1. 去除不再需要的事件。您可以在Flurry管理屏幕(Manage → Events)上执行此操作。注意:删除事件后,如果想要重新创建该事件,则需要与Flurry支持团队联系(详见此处)。
  2. 重新设计您的Flurry事件。最好使用一个不同的事件来处理一组类似的动作,并在参数字典中提供细节信息,而不是针对每个动作创建新的(自定义)事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接