在后台模式下定期向服务器发送小数据

时间:2015-12-29 13:22:07

标签: ios swift background-process multitasking

我正在实施一种跟踪应用程序,我需要发现一次我的位置,每10-20秒发送一次(周期值很重要,不能超过)。 为了降低电池消耗,我停止了位置更新。这在前景中效果很好,但是当app在后台移动时我该怎么做呢? 我查看了有关后台获取的信息,但它没有获得定期发送数据的准确时间

我该如何执行此任务?

1 个答案:

答案 0 :(得分:1)

当app在后台时,您可以启动和停止定期更新位置。 为了实现这个,从Location Update的给定链接添加类。

之后在AppDelegate中导入LocationTracker.h。

在didFinishLaunchingWithOptions中添加以下代码。

let locationTracker : LocationTracker  = LocationTracker();
locationTracker?.startLocationTracking();

在LocationTracker.m中,您可以设置持续时间以重新启动更新。我设置1分钟或60秒。

//Restart the locationMaanger after 1 minute
self.shareModel.timer = [NSTimer scheduledTimerWithTimeInterval:60 target:self
                                                       selector:@selector(restartLocationUpdates)
                                                       userInfo:nil
                                                        repeats:NO];

您还可以设置获取位置的持续时间。在这里,我获取10秒的位置。

self.shareModel.delay10Seconds = [NSTimer scheduledTimerWithTimeInterval:10 target:self
                                                selector:@selector(stopLocationDelayBy10Seconds)
                                                userInfo:nil
                                                 repeats:NO];