Sag*_*ian 3 iphone location geolocation cllocationmanager ios
我有关于重大变更位置服务的问题.
Apple文档说"无论您使用标准位置服务还是重要更改位置服务来获取位置事件,您收到这些事件的方式都是相同的."
但是在"重大变更位置服务"的情况下,我无法获得任何"标准位置服务"的回复.如果有人有任何意见,请告诉我?
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米或更长时间,应用就会收到通知.它不应该比每五分钟更频繁地预期通知.如果设备能够从网络检索数据,则位置管理器更有可能及时发送通知.
| 归档时间: |
|
| 查看次数: |
8351 次 |
| 最近记录: |