In addition to the setup, it is crucial to understand how Flurry logs the events. Thanks to some of the comments, I ran some tests in debug mode. You turn it on via:
[Flurry setDebugLogEnabled:YES];
When my app launches, it sets up the user id and some pageView logging. Here is the log output:
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 did send the initial session setup automatically, so you will see the sessions on your analytics page (section above, async http response code: 200 is success). You will notice it says the Add crashed former session. This is because I clicked Stop in XCode and killed the app. This did not allow Flurry to log any events! It shows the event logged, but no send session scheduled:
2013-05-27 12:19:41.184 MyApp[8492:aa07] FlurrySession: Recording event eventName[Doc Save] with parameters[{myparams = "xyz";
}] complete
You need to click the Home button first on the device to cause Flurry to actually send the logged event. Once you click Home, you will see this in the log:
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
Then you can kill the app with Stop in XCode
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…