iOS:如何让我的应用程序永远在后台运行?

时间:2014-07-13 11:51:46

标签: ios service background

我的应用程序正在托管文件共享Web服务器。我希望应用程序正在运行,即使它在后台运行。我已经知道我可以通过设置beginBackgroundTaskWithExpirationHandler在后​​台运行我的应用程序3分钟,但这还不够长。有没有办法让应用程序永远运行,或者至少持续更长时间?

谢谢!

修改

我终于找到了一种有效的方法,它有点奇怪,但它有效。

我有程序

-(void)bgTask {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ApplicationURLScheme"]];
}

applicationDidEnterBackground中使用

调用
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
            [application beginBackgroundTaskWithExpirationHandler:^{
                [self bgTask];
            }];

多数民众赞成,不再需要代码了,我现在在后台运行我的Web服务器超过一个小时了!该应用程序不会滞后或崩溃我的iDevice!

1 个答案:

答案 0 :(得分:2)

这是我在应用程序在后台运行以永久扫描iBeacons时为我的应用程序所做的事情:

- (void) backgroundForever {
        backgroundTaskID = [application beginBackgroundTaskWithExpirationHandler:^{
             [self backgroundForever]; 
        }];
}

- (void) stopBackgroundTask {
       UIApplication *application = [UIApplication sharedApplication];
       if(backgroundTaskID != -1)
            [application endBackgroundTask:backgroundTaskID];
}

所以基本上我们在当前后台任务结束时启动一个新的后台任务。 只要您想停止后台任务,就可以调用stopBackgroundTask。它取决于您的应用程序逻辑,例如,您可以在applicationDidEnterForeground中调用它。

可行,但我不确定您的应用是否会通过Apple审核。