StartUpdatingLocation Vs的显著变化位置服务(StartUpdatingLoc

2019-08-16 19:03发布

我有关于显著改变位置服务的问题。

苹果文档中说“无论你使用标准定位服务或显著改变的位置服务来获得位置的事件,你的方式得到这些事件是一样的。”

但在“显著变化位置服务”的情况下,我不能让我在“标准定位服务”的情况下得到任何回调,请让我知道如果任何人有任何投入?

Answer 1:

startUpdatingLocation更新时当距离过滤器值超过它被称为第一次和然后的位置。

startMonitoringSignificantLocationChanges时位置的显著变化发生。

请检查CLLocationManager的细节。

startUpdatingLocation

启动该报告中,用户的当前位置更新的一代。

- (void)startUpdatingLocation Discussion

该方法将立即返回。 调用此方法会导致位置管理,以获得初始定位(这可能需要几秒钟),并通过调用它的LocationManager通知您的委托:didUpdateLocations:方法。 (在iOS 5及更早版本中,位置管理器调用的LocationManager:didUpdateToLocation:fromLocation:方法来代替。)在此之后,接收器产生更新事件被超过在distanceFilter属性的值时,主要。 更新可能在其他情况下,虽然传递。 例如,如果硬件集更精确的位置读数的接收器可发送另一个通知。

在继承调用此方法几次不会自动导致产生新的事件。 在相互调用stopUpdatingLocation,但是,确实会导致下一次调用此方法时,要发送一个新的初始事件。

如果启动该服务,你的应用程序被暂停,系统,直到您的应用程序启动时(无论是前台还是后台)再次停止运行的事件的输送。 如果您的应用程序被终止,新的位置事件交付完全停止。 因此,如果你的应用程序需要接收位置事件,而在后台,它必须包含在其Info.plist文件中UIBackgroundModes键(与位置值)。

除了实施的LocationManager您的委托对象:didUpdateLocations:方法外,还应该实现的LocationManager:didFailWithError:方法潜在的错误回应。


startMonitoringSignificantLocationChanges

启动基于显著位置的变化更新的一代。

- (void)startMonitoringSignificantLocationChanges Discussion

此方法启动位置事件的异步传递,返回你打电话后不久。 地点事件被传递到您委托的的LocationManager:didUpdateLocations:方法。 交付的第一个事件通常是最近缓存的位置事件(如果有的话),但可能在某些情况下,一个新的事件。 获取当前位置的修补程序可能需要一些额外秒,所以一定要检查你的委托方法的位置事件的时间戳。

返回当前位置修复程序后,接收器产生更新事件检测到用户的位置显著的变化,只有当。 例如,当设备变得与不同小区塔有关它可能产生一个新的事件。 它不会在distanceFilter财产依靠值生成事件。 在继承调用此方法几次不会自动导致产生新的事件。 在调用之间stopMonitoringSignificantLocationChanges,但是,确实会导致下一次调用此方法时,要发送一个新的初始事件。

如果启动该服务,并您的应用程序随后终止,如果一个新的事件到达时,系统会自动将重新启动应用程序进入后台。 在这种情况下,选择字典传递给的LocationManager:didUpdateLocations:您的应用程序委托的方法中包含的关键UIApplicationLaunchOptionsLocationKey,表明您的应用程序,因为定位事件的启动。 在重新开张,你还必须配置一个位置管理对象,并调用该方法可以继续接收位置的事件。 当您重新启动位置服务,当前事件被立即传送到您的委托。 此外,你的位置管理对象的位置属性填入您启动定位服务甚至在最近的位置的对象。

除了实施的LocationManager您的委托对象:didUpdateLocations:方法外,还应该实现的LocationManager:didFailWithError:方法潜在的错误回应。

:应用程序能够尽快期待一个通知,该设备从之前通知移动500米以上。 它不应该指望比通知更加频繁,每五分钟一次。 如果设备能够从网络检索数据,位置管理是更容易及时通知传递。



文章来源: StartUpdatingLocation Vs significant-change location service