从iOS 12开始,CLLocationManager不再在后台运行无休止。该应用程序在没有随机时间的情况下终止。在iOS 12之前,这个程序运行得很好。
为了演示这个问题,我创建了一个示例应用程序这里
该演示应用程序只是启动一个CLLocationManager,并保持在后台运行。在后台运行时,我们通过记录它来跟踪它。问题是应用程序会被iOS终止。创建演示应用程序是为了演示这个问题。
复制的步骤
结果:
在随机时间之后,App将被终止,没有任何理由。
预期结果:
它应该如何工作
苹果的一位工程师证实了这一点:
一旦在前台启动了CLLocationManager更新,并且您完成了在后台运行它的所有工作,那么位置更新应该在后台无限运行,直到:
发布于 2018-10-26 09:04:02
最新答案:
苹果修复了iOS 12.2 beta 2 (16E5191d)中的这个错误。
原始分析和bug检测:
与Apple Developer技术支持部门一起,我们用this诊断文件分析了这个问题。按照这些指导方针,您可以安装配置文件,以便在设备上进行更多的日志记录。我不知道这些日志是如何工作的,也不知道在哪里可以找到这个问题,但苹果为我做了这件事,并提出了第一个分析:
关于您在2018/10/22 01:01:12:587所观察到的暂停事件,这就是我所看到的(在您上次活动日志记录之后的大约一分钟)。 CllocationManag:2725,终止于描述:{ owner =;target = rw.sp.flitsmeister.frameworks.CllocationManagerBackgroundTest;} 这基本上是说您的应用程序被终止了,因为系统需要驱动器空间,并且杀死了许多应用程序,这样它就可以删除它们的/tmp和/Library/缓存目录。我在iOS 12中看到这个过程更激进,但是看到你在256 GB的设备上,并且清理后有~179 GB的空闲,我很难相信这是合理的。
在发送了更多的系统诊断和复制案例后,苹果尽力进行了分析,并得出了以下结论:
不幸的是我没有带来好消息。 结果是,目前在iOS 12中有一种新机制,它将定期终止长期运行的后台应用程序,因为系统需要释放资源。在这个时候,这个过程有点太激进了,我正在和相关的团队合作,让这个过程表现得更好。 所以,在这一点上,我希望你提交一个错误报告。解释症状。并确保您上传系统诊断文件和错误报告。(我已经把你的送进来了,但有了新的也没什么坏处)。请告诉我窃听器的号码。
因此,这意味着目前在iOS 12中,您的应用程序不会在后台无休止地运行。我已经填写了一个错误报告,它的编号是45581276,并将尝试更新这个线程。
发布于 2018-11-12 22:28:31
当应用程序在后台运行时,我尝试清除/tmp和/Library/缓存目录,而没有任何行为改变。当应用程序处理后台位置时,我也会定期尝试,而不会有任何改变。
https://stackoverflow.com/questions/53005174
复制相似问题