应用程序启动后,由于正在input受监视的区域而使用Flurrylogging事件

情况如下。 我有一个iOS应用程序,它使用CLLocationManager的区域监视function在input预定义的地理区域时通知应用程序。 区域监控工作的方式,即使应用程序先前被终止,也可以通知应用程序进入区域。 基本上,操作系统将启动应用程序(不带它前面),当地区进入,并给予应用程序一个机会来响应该地区进入。

我想要做的就是在input区域时使用Flurrylogging一个事件。 目前,它似乎没有工作,因为事件没有在Flurry中出现,甚至在几天之后。 我应该注意到,我已经testing了i) Flurry事件日志logging是否正常工作正常,当用户启动应用程序和ii)我的应用程序确实正在接收区域input和退出事件(我每次使用本地通知该地区进入或退出)。

我的怀疑是,它与应用程序委托生命周期的不同之处在于,当应用程序由于进入区域而启动时,与由于用户启动应用程序而启动的应用程序的生命周期不同。 我的第一个怀疑是application:didFinishLaunchingWithOptions:在应用程序在后台启动时未被调用。 因为我对[Flurry startSession:@"my_key"]调用是在application:didFinishLaunchingWithOptions:方法中,所以这会解释一些事情。 但是,对于startMonitoringForRegion:desiredAccuracy:的Apple文档startMonitoringForRegion:desiredAccuracy:build议application:didFinishLaunchingWithOptions:实际上称为:

如果您开始监控某个地区,并且您的应用程序随后被终止,则系统会自动将其重新启动为背景,如果区域边界超出范围。 在这种情况下,传递给应用程序委托的应用程序:didFinishLaunchingWithOptions:方法的选项字典包含UIApplicationLaunchOptionsLocationKey键,以表示由于位置相关事件而启动了您的应用程序。

虽然我使用startMonitoringForRegion:而不是startMonitoringForRegion:desiredAccuracy:不推荐),我假设都调用application:didFinishLaunchingWithOptions: startMonitoringForRegion:desiredAccuracy: 然后我在Flurry文档中读到一个关于startSession:的注释startSession:强调我的):

此方法是Flurry Analytics收集的入口点。 它必须在applicationDidFinishLaunching的范围内调用。 会话将继续在应用程序处于前台的时间段,直到您的应用程序在setSessionContinueSeconds:中指定的时间后退。 如果应用程序在此期间恢复,则会话将继续,否则将开始新的会话。 注意: 如果在模拟器上testing,请确保通过主页button将应用程序发送到后台。 Flurry依靠iOS生命周期来完成整个报告。

所以,我的怀疑是,即使我正在testing一个真实的设备,应用程序永远不会被“发送到后台”,因为当它启动它永远不会进入前台开始。 任何人都可以澄清,这是否是我login的事件永不露面的原因,或者是否有其他原因? 而且,有没有解决方法呢?

所以我联系了Flurry的支持,这就是我所听到的:

因此,目前在应用程序处于后台时不可能logging/logging事件。

我们的工程团队正在为此提供解决scheme,这可能在未来几个版本的SDK中提供,大概需要几个月的时间。

所以我想我们会拭目以待。