我正在使用此插件开发Cordova项目:Cordova Plugin Background Geolocation 当我的应用程序处于后台时获取GPS更新。
我想在应用程序处于后台3分钟后停止获取更新。 我没有Objective-C技能来修改插件来实现这一目标。
我想有一种方法可以在Objective-C上使用计时器在3分钟后停止服务。
任何人都可以帮我吗?
更新
该插件使用stop
方法here。
答案 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.}