locationManager:didChangeAuthorization 与 locationManagerDidChangeAuthorization

Mic*_*hel 6 core-location ios swiftui

在使用SwiftUI和的 iOS 应用程序中CoreLocation。我需要密切关注用户授予的位置访问权限的状态。

查看 的文档CLLocationManagerDelegate,看起来我应该使用locationManagerDidChangeAuthorization方法。

问题是这个方法永远不会被调用(据我所知)。此外,另一个方法locationManager:didChangeAuthorization(应该被弃用)似乎可以完成这项工作。

如果有人有任何好的建议,请告诉我。

Pau*_*w11 9

locationManagerDidChangeAuthorization仅适用于 iOS 14。如果您运行的是较早版本的 iOS,则需要使用较旧的方法locationManager:didChangeAuthorization. 尽管它已被弃用,但它仍然有效(如果您支持较早的 iOS 版本,则必须使用它)。

WWDC 2020 会议中介绍了委托方法更改的原因- 在 iOS 14 中,位置权限具有时间权限(从不/使用时/始终)和新的精度权限(高/低精度)。

原始委托方法将时间权限传递给委托方法,但不传递精度信息(因为该权限以前不存在)。

Apple 没有创建一个新的委托方法来接收时间和精确权限详细信息,而是选择了一种简单的方法来告诉您发生了一些变化。然后您需要编写代码来检查CLLocationManager以确定您拥有的权限以及如何处理它。

他们为什么这样做,我们只能推测,但我怀疑这让他们可以灵活地在未来添加更多权限,而无需更改方法签名。