过去两天我一直在尝试在应用程序中实现延迟位置更新。
我面临的问题是
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
即使在我调用之后,方法每秒都会被调用
[self.locMgr allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)200 timeout:(NSTimeInterval)25];
method.
虽然我不得不说
- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error
按照我指定的 25 秒后调用allowDeferredLocationUpdatesUntilTraveled
错误代码 = null 的方法。
据我从文档中了解到,didUpdateLocations 应该仅在 25 秒后调用。
任何帮助将非常感激。
我一直在努力解决同样的问题,并且我可能已经找到了解决许多人问题的答案 - 至少它解决了我的问题并让延迟更新对我来说始终有效。我按照上面列表中的所有步骤进行操作,无论我做什么,位置更新都不会延迟。我突然想到,我可能正在运行其他不允许系统休眠的应用程序,因此我杀死了多任务托盘中的所有其他应用程序。我再次运行我的示例应用程序并且......它成功了!但故事并没有就此结束。稍后我再次尝试,即使多任务托盘中没有其他应用程序运行,我也无法推迟位置服务。然后我突然想到,我的手机上有一个名为“Moves”的应用程序,即使在您手动杀死它之后,它仍能保持自身的活力。我不完全确定当你杀死 Moves 时它是如何神奇地复活的,但它确实如此(可能使用蓝牙和应用程序保存/恢复服务)。即使它处于活动状态并跟踪您的位置,它也不会出现在多任务托盘中。我认为只有手动启动的应用程序才会出现在托盘中 - 如果操作系统启动应用程序,它不会出现在托盘中。但我离题了……通过禁止 Move 使用位置服务,我能够让延迟位置服务在我的应用程序中一致工作。当我这样做时,即使它不在多任务托盘中,Moves也会抱怨。似乎如果另一个应用程序正在使用位置服务(并且不延迟),您的应用程序也不会延迟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)