使用NSTimer和NSRunLoop无限地执行方法

时间:2016-02-23 11:48:58

标签: ios objective-c background nstimer nsrunloop

我需要每隔30分钟以1分钟的间隔执行一个方法。 30分钟后,我想在接下来的30分钟内使用应用程序。

我尝试使用UIBackgroundTaskIdentifier API,它允许我执行代码的时间不超过180秒。

我不想使用静音远程通知。

使用NSTimer和NSRunLoop我已经实现了这一点,但我想知道当我提交时苹果会拒绝我的应用程序。

请帮帮我们。

- (void)applicationDidEnterBackground:(UIApplication *)application {
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
    NSTimer *loop = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(insideLoop) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:loop forMode:NSRunLoopCommonModes];
}
-(void)insideLoop {
    NSLog(@"insideLoop");
}

2 个答案:

答案 0 :(得分:0)

是的,如果您这样做,Apple会拒绝您的应用。

我也想办法让应用程序无限期地在后台保持清醒,但它打破了Apple的规则,并通过用户的电池进行咀嚼。

答案 1 :(得分:0)

因此,您无法通过这种特殊方法获得成功。

当设备发生特定事件(如位置更改)时,可以选择触发代码。背景活动的可用选项可以阅读here,但正如我所说,您在这里所获得的内容无法通过。