如何在一段时间后停止iOS中的后台服务

时间:2014-08-22 15:20:12

标签: ios object cordova cordova-plugins

我正在使用此插件开发Cordova项目:Cordova Plugin Background Geolocation 当我的应用程序处于后台时获取GPS更新。

我想在应用程序处于后台3分钟后停止获取更新。 我没有Objective-C技能来修改插件来实现这一目标。

我想有一种方法可以在Objective-C上使用计时器在3分钟后停止服务。

任何人都可以帮我吗?

更新

该插件使用stop方法here

2 个答案:

答案 0 :(得分:1)

你必须修改你的.plist文件,表明一旦应用程序进入后台你就会运行任务......就是说,你想要的东西看起来像这样(全部在AppDelegate中)

- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"Entered background");
    [self monitorLocation];
}

- (void)monitorLocation
{
[NSTimer scheduledTimerWithTimeInterval:180 //That's in seconds
    target:self
    selector:@selector(stopMonitoring)
    userInfo:nil
    repeats:NO];
    //Do whatever monitoring here

}

- (void)stopMonitoring
{
    //Stop monitoring location
}

 - (void)applicationWillEnterForeground:(UIApplication *)application {
    NSLog(@"app will enter foreground");
    [self stopMonitoring];
}

答案 1 :(得分:1)

试试这个解决方案,在这里你需要创建NSTimer的全局对象并检查NSTimer对象是否有效

-(void)applicationDidEnterBackground:(UIApplication *)application {

if ([objTimer isValid]) {
    [objTimer invalidate];
}else{
    objTimer = [NSTimer scheduledTimerWithTimeInterval:180 target:self selector:@selector(stopGPS:)  userInfo:nil repeats:NO];
}
objTimer = nil;}



- (void)stopGPS:(NSTimer *)timer {
// code for stoping GPS service.}