IOS didUpdateLocations称为多时间

我正在使用didUpdateLocation。 在里面,我叫了一个webservices。

而且,我想每2分钟一次,我会打电话给web服务。

但是,doUpdateLocation多次更新位置。 所以,我必须调用webservices。 不是很好。

如何每2分钟致电一次webservices。

请帮帮我!

你必须用didUpdateLocation以外的东西来触发该呼叫,因为该呼叫的频率取决于设备的用户,而不是你的代码。 如果您只需在位置发生重大变化的情况下致电Web服务,则可以执行以下操作。

  1. 保存传递给didUpdateLocation的位置。
  2. 在两分钟的时间间隔内使用重复的NSTimer
  3. 计时器每次启动时,请检查当前位置与最后一次请求的位置。 如果超过阈值,请提出要求。
  4. 如果发出请求,请保存下一个迭代的位置。

另一种algorithm:

  1. 发出networking请求。 记住时间。
  2. 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"); }