Objective c CLLocationManager startUpdatingLocation vs StartMonitoring重要位置更改

Objective c CLLocationManager startUpdatingLocation vs StartMonitoring重要位置更改,objective-c,ios,cllocationmanager,Objective C,Ios,Cllocationmanager,我正在开发一个web应用程序,仅当用户位于特定区域时,该应用程序才允许用户登录该应用程序。我在应用程序开始时调用了locationManager startUpdatingLocation,以获取用户的位置并启用/禁用登录 用户登录后,我打电话给 [locationManager stopUpdatingLocation]; [locationManager startMonitoringSignificantLocationChanges]; 并在更新的位置位于区域之外时注销用户。使用这两种

我正在开发一个web应用程序,仅当用户位于特定区域时,该应用程序才允许用户登录该应用程序。我在应用程序开始时调用了
locationManager startUpdatingLocation
,以获取用户的位置并启用/禁用登录

用户登录后,我打电话给

[locationManager stopUpdatingLocation];
[locationManager startMonitoringSignificantLocationChanges];
并在更新的位置位于区域之外时注销用户。使用这两种方法会有冲突吗?(我正在模拟器上测试代码,因此位置总是相同的)


注意:我没有使用
didEnterRegion
didExitRegion
,因为一切都是由现有的Javascript代码处理的。我只发送用户的当前位置。

这取决于用户登录后您对该位置的需要。当您监控重大更改时,您的locationManager只会收到重大更改的通知。(例如,新的手机发射塔、wifi变化、其他应用程序呼叫位置等)。这不会是一个一致的基础。如果您所关心的只是用户登录,那么我可能会一起取消重要的监视。如果您仍然需要位置,那么请准备只获取位置的零星更新。

我从
startUpdatingLocation
开始,因为当我在应用程序开始时尝试使用
startMonitoringSignificantLocationChanges
时,它没有将当前位置发送到我的应用程序。在用户登录后,除非用户退出允许其登录的区域,否则我不会真正使用该位置,因此我认为监视会起作用。我还没有在实际的设备上进行测试(并且移动到足以让监控系统通知我任何事情),因为我仍在等待苹果批准我成为付费iOS开发者。通常,如果你在应用程序中处于活动状态,你会主动监控位置。监视重要位置是指不需要经常更新位置的情况。就像背景一样。这有助于延长电池寿命。如果您只需要监控特定区域,我建议使用区域监控方法。我目前正在使用它们,它们工作得非常好。查看-startMonitoringForRegion,您应该会找到您需要的。我确实查看了region monitoring,但是我已经有了一个现有代码,如果我将其传递到当前位置,它将检查区域。我更喜欢位置更新而不是区域监控,因此它与其他平台更一致。谢谢它们不冲突。我测试过了。你可以安全地跑。