[英]Recording events with Flurry after app was launched due to a monitored region being entered
情况如下。 我有一个iOS应用程序,该应用程序使用CLLocationManager的区域监视功能在输入预定义的地理区域时通知该应用程序。 区域监视的工作方式是,即使应用程序先前已终止,也可以将用户进入区域的通知通知给该应用程序。 基本上,操作系统会在进入区域时启动应用程序(而不将其置于前台),并使应用程序有机会对输入的区域做出响应。
我想做的是在输入区域时使用Flurry记录事件。 目前,它似乎不起作用,因为事件甚至在几天后都没有出现在Flurry中。 我应该注意,我已经测试了以下两项: i)
当用户正常启动应用程序时Flurry事件日志正常运行;以及ii)
我的应用程序确实在接收进入和退出的区域事件(我每次都使用本地通知)进入或退出该区域)。
我的怀疑是,它与应用程序委托生命周期有关,这与由于进入区域而启动应用程序与由于用户启动应用程序而导致启动应用程序不同。 我的第一个怀疑是在后台启动应用程序时未调用application:didFinishLaunchingWithOptions:
因为我对[Flurry startSession:@"my_key"]
调用是在application:didFinishLaunchingWithOptions:
方法中,所以这已经可以解释了。 但是,Apple文档startMonitoringForRegion:desiredAccuracy:
建议将application:didFinishLaunchingWithOptions:
实际上称为:
如果您开始监视区域,并且随后终止了您的应用程序,则如果越过区域边界,系统会自动将其重新启动到后台。 在这种情况下,传递给应用程序委托的application:didFinishLaunchingWithOptions:方法的选项字典包含键UIApplicationLaunchOptionsLocationKey,以指示由于位置相关事件而启动了您的应用程序。
尽管我使用的是startMonitoringForRegion:
而不是startMonitoringForRegion:desiredAccuracy:
不建议使用),但我假设两者都调用application:didFinishLaunchingWithOptions:
startMonitoringForRegion:desiredAccuracy:
然后,我在Flurry文档中阅读了有关startSession:
的注释startSession:
重点是我的):
此方法用作Flurry Analytics集合的入口点。 必须在applicationDidFinishLaunching范围内调用它。 在应用程序处于前台状态期间,会话将继续进行,直到您的应用程序在setSessionContinueSeconds:中指定的时间成为背景为止。 如果在此期间恢复应用,会话将继续,否则将开始新的会话。 注意: 如果要在模拟器上进行测试,请确保通过“主页”按钮将App发送到后台。 Flurry依赖于iOS生命周期来完成完整的报告。
因此,我的怀疑是,即使我在真实的设备上进行测试,该应用也永远不会“发送到后台”,因为它在启动时永远不会进入前台。 谁能说明这是我的记录事件从未出现的原因,还是可能还有其他原因? 而且,有没有解决方法?
所以我联系了Flurry支持部门,这是我的回信:
因此,目前尚无法在后台运行时记录/记录事件。
我们的工程团队正在努力解决此问题,并且可能会在一个月后的将来版本的SDK中提供该解决方案。
所以我想我们会拭目以待。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.