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

标签 ios service background

我的应用程序正在托管文件共享 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/

相关文章:

java - 检查服务是否正在从广播接收器内运行

在后台运行的 IOS 5 应用程序在 4 天后终止

iphone - 在推送 UINavigationController 时为 UIView 设置动画

ios - 负载测试苹果推送通知服务器应用程序

iphone - iphone 中带边框的图像

flutter - 在 flutter 中用 2 张图片设计背景

WPF:如何使按钮背景透明

ios - GLKit 移动相机时一个物体移动奇怪

android - 当服务停止时,服务启动的 AsyncTask 是否完成?

php - 在 linux 上用 php 检查服务状态?