CLLocationManager开始监控区域时如何判断用户是否已经在区域内

How to determine if user is already within region when CLLocationManager begins monitoring regions

我有一个在后台测距信标的应用程序。当我初始化我的 CLLocationManager 实例时,我开始使用 startMonitoringForRegion 方法。我正在处理 locationManager:didEnterRegionlocationManager:didExitRegionlocationManager:didDetermineState:ForRegion 委托方法。在这些方法中,我正在调整范围 on/off.

这一切似乎都很好用,除非在用户已经存在于该区域内时初始化 CLLocationManager。在那种情况下,直到我退出并重新进入该区域后,才会调用 locationManager:didEnterRegionlocationManager:DidDetermineState:ForRegion 。我一直认为这至少会触发 locationManager:DidDetermineState:ForRegion 但事实并非如此。

有没有办法确定当我第一次启动时用户是否最初在区域内 startMonitoringForRegion

您可以调用管理员的requestStateForRegion方法。这将导致您的委托的 didDetermineState 方法被异步调用。