我的应用程序正在托管文件共享 Web 服务器。我希望应用程序正在运行,即使它在后台也是如此。我已经知道我可以通过设置 beginBackgroundTaskWithExpirationHandler
在后台运行我的应用程序 3 分钟,但这还不够长。有没有办法让应用程序永远运行,或者至少运行更长时间?
谢谢!
编辑
我终于找到了一个可行的方法,虽然有点奇怪,但确实有效。
我有程序
-(void)bgTask {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"ApplicationURLScheme"]];
}
在 applicationDidEnterBackground
中使用
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[application beginBackgroundTaskWithExpirationHandler:^{
[self bgTask];
}];
就是这样,不需要更多代码,我现在在后台运行我的网络服务器一个多小时了!而且该应用程序没有延迟或导致我的 iDevice 崩溃!
最佳答案
当我需要应用程序在后台运行以永远扫描 iBeacons 时,这是我为应用程序所做的操作:
- (void) backgroundForever {
backgroundTaskID = [application beginBackgroundTaskWithExpirationHandler:^{
[self backgroundForever];
}];
}
- (void) stopBackgroundTask {
UIApplication *application = [UIApplication sharedApplication];
if(backgroundTaskID != -1)
[application endBackgroundTask:backgroundTaskID];
}
所以基本上我们在当前后台任务结束时启动一个新的后台任务。 每当你想停止后台任务时,你可以调用 stopBackgroundTask 。这取决于您的应用程序逻辑,例如您可以在 applicationDidEnterForeground 中调用它。
它有效,但我不确定您的应用是否会通过 Apple 审核。
关于iOS:如何让我的应用程序永远在后台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722384/