从iOS 12开始,CLLocationManager在后台不再无休止地运行。该应用程序被终止,没有崩溃日志,随机发生。在iOS 12之前,此功能运行良好。
为演示此问题,我创建了一个示例应用here
该演示应用程序仅启动一个CLLocationManager并使其在后台运行。在后台运行时,我们通过记录日志来跟踪它。问题是该应用程序被iOS终止。创建了演示应用程序来演示此问题。
复制步骤
结果:
应用在随机时间后无故终止。
预期结果:
应如何工作
这已得到Apple工程师的确认:
一旦CLLocationManager更新在前台启动,并且您已完成所有工作以使其在后台运行,则位置更新应在后台无休止地运行,直到:
答案 0 :(得分:23)
更新后的答案:
Apple修复了iOS 12.2 beta 2(16E5191d)中的此错误
原始分析和错误检测:
我们与Apple开发人员技术支持一起使用Sysdiagnose文件分析了此问题。完成这些guidelines之后,您可以安装配置文件以在设备上进行更多日志记录。我不知道这些日志的工作方式以及在哪里可以找到此问题,但是Apple为我完成了此任务,并进行了首次分析:
关于您在2018/10/22 01:01:12:587观察到的暂停事件, 是我看到的(在您上次活动记录后约一分钟)
[CllocationManag:2725]终止于描述: { 所有者=; target = rw.sp.flitsmeister.frameworks.CllocationManagerBackgroundTest; }
这基本上是在说您的应用已终止,因为 系统需要驱动器空间,并杀死了许多应用程序,因此可以删除 他们的/ tmp和/ Library / Caches目录。我看过这个过程 在iOS 12中更具侵略性,但看到您在 256GB设备,清理后有约179 GB可用空间,我正在寻找它 很难相信这是合理的。
在发送了更多的系统诊断和复制案例后,Apple竭尽全力进行分析,并得出以下结论:
不幸的是,我没有带来好消息。
事实证明,当前在iOS 12中存在一种新机制 将定期终止长时间运行的后台应用程序,因为系统 需要释放资源。这时候这个过程也有点 积极进取,我正在与相关团队合作,以实现这一目标 表现得更好。
因此,在这一点上,我希望您提交一个错误报告。解释 症状。并确保您将sysdiagnose文件与 错误报告。 (我已经将您的邮件寄出,但是 以及新的)。并且让我知道错误号。
因此,这意味着当前在iOS 12中,您的应用不会在后台无限运行。我已经填写了一个错误报告,编号为45581276,将尝试保持此线程更新。
答案 1 :(得分:3)
我尝试在应用程序在后台运行时清除/ tmp和/ Library / Caches目录,而没有任何行为更改。当应用程序处理背景位置时也没有进行任何更改,我也定期尝试了同样的操作。