0

我正在寻找一种方法来在我的 iOS 应用程序中每 n 分钟更新一次后台位置。现在我每秒都会更新一次。我可以将一秒更改为三秒或四秒还是每分钟...

这是我的代码:

 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
        if([self.delegate conformsToProtocol:@protocol(GPSLocationDelegate)]) { 
            // Check if the class assigning itself as the delegate conforms to our protocol.  If not, the message will go nowhere.  Not good.

            [self.delegate locationUpdate:newLocation];

             NSLog(@"location manager");
            /// alert for check msg ////


            ////////////////////////////
        }
    }
4

3 回答 3

2

你做不到。或者,您可以通过以下方式实现它。当您获得位置更新时,它将具有与之关联的时间戳。

缓存第一次位置更新的时间戳。当您收到第二次位置更新时,比较差异并检查。如果它大于您的阈值限制,请致电您的代表并使用更新的位置时间戳更新缓存的时间戳。

于 2012-07-27T13:44:51.900 回答
1

您可以在收到新位置时停止位置管理器,并安排一个计时器在 60 秒后再次启动它。唯一的问题是您不会在每 60 秒后准确触发事件,但这可能没问题。

当你停止你的位置管理器时也要小心,因为我认为它的第一个事件可能是无效的(给你一个你最后一个位置的副本),所以你可能必须在停止之前让它运行 5-10 秒它并安排下一个触发器。

祝你好运!

于 2012-07-27T15:24:44.190 回答
0

位置更新是异步的,您无法控制它们出现的频率。

于 2012-07-27T13:48:39.833 回答