应用程序启动后,由于正在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中提供,大概需要几个月的时间。
所以我想我们会拭目以待。