我正在更新一个应用程序,该应用程序使用 CLLocationManager 监视用户位置的重大更改。我允许用户打开或关闭此选项,并适当设置 startMonitoringSignificantLocationChanges 和 stopMonitoringSignificantLocationChanges。
问题是当用户重新打开应用程序时,我需要知道应用程序当前是否正在监视重要位置,以便相应地设置此切换的当前状态。
我可以在 CLLocationManager 或其他地方检查某些内容,以告诉我监控当前是打开还是关闭。
最佳答案
在 iOS 8 中,您可以检查从用户那里获得的当前权限。如果用户向您授予始终
权限,则意味着他们允许进行重大位置更改。如果他们只允许 WhenInUse
,则不允许进行重大位置更改。请参阅this post了解有关这两个位置权限的详细信息。
在 iOS 8 之前,我认为没有办法可以说明这一点。用户可以允许您使用他们的位置,也可以不允许您使用他们的位置。因此,您需要自己跟踪位置管理器的当前状态(即,NSUserDefaults
中有一个 BOOL
,当您调用 startMonitoringSignificantLocationChanges
,并在调用 stopMonitoringSignificantLocationChanges
时将其设置为 NO
)。
关于mapkit - 如何判断 CLLocationManager 是否正在监视重大位置更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573003/