IOS didUpdateLocations称为多时间
我正在使用didUpdateLocation。 在里面,我叫了一个webservices。
而且,我想每2分钟一次,我会打电话给web服务。
但是,doUpdateLocation多次更新位置。 所以,我必须调用webservices。 不是很好。
如何每2分钟致电一次webservices。
请帮帮我!
你必须用didUpdateLocation
以外的东西来触发该呼叫,因为该呼叫的频率取决于设备的用户,而不是你的代码。 如果您只需在位置发生重大变化的情况下致电Web服务,则可以执行以下操作。
- 保存传递给
didUpdateLocation
的位置。 - 在两分钟的时间间隔内使用重复的
NSTimer
。 - 计时器每次启动时,请检查当前位置与最后一次请求的位置。 如果超过阈值,请提出要求。
- 如果发出请求,请保存下一个迭代的位置。
另一种algorithm:
- 发出networking请求。 记住时间。
- 当
didUpdateLocation
触发时,请检查上次发出Web请求的时间。 如果超过2分钟,请发出请求,否则忽略更新。
您可能需要一点点,这取决于您的确切需求。 如果请求的节奏是最重要的,那么从第一个开始。 如果唯一重要的是你不会比每2分钟更频繁地打电话,但是更长的时间间隔是完全可以的,那就跟第二个一样吧。
使用NSTimer。
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(handleTimer:) userInfo:nil repeats:YES];
将此代码放在DidLoad方法中,并在其他地方添加下面的代码。
- (void)handleTimer:(NSTimer*)theTimer { NSLog (@"Working"); }