IOS didUpdateLocations称为多次

时间:2015-11-12 08:26:07

标签: ios objective-c cllocationmanager

我正在使用didUpdateLocation。在里面,我打电话给网络服务。

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

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

如何每2分钟拨打一次网络服务。

请帮助我!

2 个答案:

答案 0 :(得分:1)

您必须使用didUpdateLocation之外的其他内容触发呼叫,因为该呼叫的频率取决于设备的用户,而不是您的代码。如果您只需要在位置发生重大变化时调用Web服务,则可以执行以下操作:

  1. 保存传递给didUpdateLocation
  2. 的位置
  3. 每隔两分钟使用一次重复的NSTimer
  4. 每次计时器触发时,请检查当前位置与上次请求时的位置。如果超过阈值,请提出请求。
  5. 如果发出请求,请保存下一次迭代的位置。
  6. 另一种算法:

    1. 发出网络请求。记住时间。
    2. didUpdateLocation触发时,请检查您上次发出网络请求的时间。如果超过2分钟前,请提出请求,否则请忽略更新。
    3. 根据您的确切需要,您可能需要一些。如果请求的节奏最重要,请从第一个开始。如果唯一重要的一点是你不会比每2分钟更频繁地拨打电话,但是更长的时间间隔完全没问题,那就去第二个。

答案 1 :(得分:0)

使用NSTimer。

  NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:2.0
                                                  target:self
                                                selector:@selector(handleTimer:)
                                                userInfo:nil repeats:YES];

将此代码放入DidLoad方法中,并在其他地方添加以下代码。

     - (void)handleTimer:(NSTimer*)theTimer {

       NSLog (@"Working");

     }