使用Xcode 9为iOS 11设备构建的应用程序上的间歇性和延迟重大位置更改事件

使用Xcode 9为iOS 11设备构建的应用程序上的间歇性和延迟重大位置更改事件,ios,core-location,cllocationmanager,ios11,xcode9,Ios,Core Location,Cllocationmanager,Ios11,Xcode9,我已经对此进行了调查,但我想看看是否还有其他人有这个问题 似乎在iOS 11上,重大位置更改(SLC)的表现有所不同,但仅在构建于Xcode 9上的应用上。与iOS 10相比,SLC的性能似乎差得多,而且延迟。我可以用来自多个设备的数据和一个容易重复的实验来支持这一点。我想尽量缩短这篇文章的篇幅,如果有人想要更多关于如何更详细地再现这个问题的数据或说明,我很乐意与大家分享我是如何做到这一切的 使用这个简约的SLC缓存应用程序:我能够从iOS 10和iOS 11设备获取数据 该问题仅存在于iOS

我已经对此进行了调查,但我想看看是否还有其他人有这个问题

似乎在iOS 11上,重大位置更改(SLC)的表现有所不同,但仅在构建于Xcode 9上的应用上。与iOS 10相比,SLC的性能似乎差得多,而且延迟。我可以用来自多个设备的数据和一个容易重复的实验来支持这一点。我想尽量缩短这篇文章的篇幅,如果有人想要更多关于如何更详细地再现这个问题的数据或说明,我很乐意与大家分享我是如何做到这一切的

使用这个简约的SLC缓存应用程序:我能够从iOS 10和iOS 11设备获取数据

该问题仅存在于iOS 11设备上,其中接收SLC的应用程序已构建在Xcode 9上。为了确保这一点是清楚的:

  • 基于Xcode 9构建的iOS 10设备+应用程序:与以前一样工作
  • 基于Xcode 8构建的iOS 10设备+应用程序:与以前一样工作
  • 基于Xcode 8构建的iOS 11设备+应用程序:与以前一样工作
  • 基于Xcode 9构建的iOS 11设备+应用程序:存在问题
大多数情况下(但并非总是如此),iOS 11+Xcode 9构建上的SLC发生时间明显晚于控制(iOS 10)设备上的SLC

比较上述应用程序中的日志文件,iOS 10设备比iOS 11设备早2分钟获得SLC。有时10-15分钟之前

样本摘要数据,其中每条线路是不同的行程,代表首次记录该行程的SLC(单位:HH:mm:ss):

iOS 10和iOS 11中出现SLC时的差距似乎不可接受


还有人看到这种降级的SLC行为吗?

如果您只使用“While use”位置访问,据我所知,对您来说没有任何变化

但是,如果您使用“始终”访问,并且没有提供您应该提供的“使用时”回退

以下信息可能对iOS 11有用

正如布拉德·詹森(Brad Jensen)在我提到的WWDC演讲中解释的那样,苹果已经决定,强迫用户“始终”访问应用程序的位置是一种糟糕的用户体验:

现在,我们认为许多开发人员选择 授权始终是指他们只是试图给他们的用户 最好的体验(…),但这会导致非常差的用户 不希望始终授予应用的用户的体验 授权。他们被迫在授予应用程序之间做出选择 总是,在这个例子中,哪个比他们想要的要多,或者 从不承认,这意味着他们不会从中受益 应用程序的基于位置的功能。他们最后的选择是授予 在他们使用完之后,它总是会撤销授权 应用程序。在任何情况下,用户都不会玩得很开心 应用程序

要了解更多详情,你可以在下面的博客中阅读,它可能更有用


对于此应用程序,“始终”对其功能至关重要。不想授予其“始终”访问权限的用户将无法从应用程序中获得任何信息。您找到解决方案了吗?我还必须实现SLC。请建议我最好的方式来捕捉位置,即使应用程序没有运行。
 iOS 10  |  iOS 11
-------------------
20:41:08 | 20:44:45
07:21:25 | 07:27:48
18:54:57 | 19:07:36
07:48:17 | 07:51:03
17:29:44 | 17:38:18