iOS 11 将位置服务从 "While Using" 更新到 "Always"

iOS 11 updating Location Services from "While Using" to "Always"

我最近正在更新应用以在后台添加定位服务。

应用目前支持"While using the App"定位服务,我想支持"Always allow"。

我记得此功能应涵盖两种情况。

  1. 尚未下载该应用程序的新用户。

  2. 当前用户,在使用该应用时已经授予该应用接收设备位置的权限。

场景 1 运行良好,但场景 2 出现了一些奇怪的事情。

当我启动应用程序时,在启动画面之后,iOS 提示用户使用两个选项提升应用程序的授权级别,"Only while using the app" 和 "Always Allow"。

我想稍后升级,而不是在初始屏幕之后。

有人知道为什么会这样吗?

这个问题已通过对所有 CoreLocation 库的符号断点解决。

如何?

1 - 在 didFinishLaunchingWithOptions 的第一行打断点

2 - 启动您的应用程序

3 - 在控制台面板上,插入此命令以中断 CoreLocation 库的每个方法

lldb: break set -r CoreLocation

4 - 恢复您的应用程序

现在调试将在从 CoreLocation 库调用的每个函数处停止

问题是依赖项在我没有意识到的情况下检查后台模式,所以这触发了警报。