我的应用程序正在托管文件共享Web服务器。我希望应用程序正在运行,即使它在后台运行。我已经知道我可以通过设置beginBackgroundTaskWithExpirationHandler
在后台运行我的应用程序3分钟,但这还不够长。有没有办法让应用程序永远运行,或者至少持续更长时间?
谢谢!
修改
我终于找到了一种有效的方法,它有点奇怪,但它有效。
我有程序
-(void)bgTask {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ApplicationURLScheme"]];
}
在applicationDidEnterBackground
中使用
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[application beginBackgroundTaskWithExpirationHandler:^{
[self bgTask];
}];
多数民众赞成,不再需要代码了,我现在在后台运行我的Web服务器超过一个小时了!该应用程序不会滞后或崩溃我的iDevice!
答案 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审核。