ios7如何在后台运行进程

Posted

技术标签:

【中文标题】ios7如何在后台运行进程【英文标题】:how to run process in background in ios7 【发布时间】:2014-03-31 08:05:45 【问题描述】:

我想在前台和后台连续运行我的进程。我已经实现了以下代码

self.updateTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                                    target:self
                                                  selector:@selector(repeatedMethod)
                                                  userInfo:nil
                                                   repeats:YES];

self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^
    NSLog(@"Background handler called. Not running background tasks anymore.");
    [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
    self.backgroundTask = UIBackgroundTaskInvalid;
];

在前台很好,但在后台进程只运行了 5 分钟,并且运行时间不超过 5 分钟。但我希望它即使在后台也能连续运行。请帮助。

【问题讨论】:

【参考方案1】:

发生这种情况,因为完成处理程序在 5 分钟后被调用。在使用 UIBackgroundModes 之一之前,您无法在 ios 中无限期运行后台进程,这也取决于您必须提供 BackgroundMode 的功能,如果您在你的应用程序中使用它,否则苹果会拒绝它。

例如,如果您使用“VoiP”BackgroundMode,您的应用程序应提供“VoiP 服务”,否则将被拒绝

【讨论】:

我想在后台模式下更新位置。除此之外我还想做一些其他任务。可以吗 另外请提供一些链接以获取持续的位置更新。 是的,您可能应该使用“位置”背景模式,正如苹果文档中所说的这种背景模式:“该应用程序向用户提供基于位置的信息,并且需要使用标准位置服务(相对于重大更改位置服务)来实现此功能。”因此,在 xcode 中将背景模式设置为“位置”,并查看一些关于如何使用该背景模式的教程。还要寻找“后台获取”模式(仅在 iOS7 中可用) “你不能在 iOS 中无限期地运行后台进程,直到你使用其中之一”这是误导,听起来你可以无限期地运行后台进程,而不是案例。

以上是关于ios7如何在后台运行进程的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 中超过 180 秒的后台运行 NSTimer?

如何使用 Worklight 运行后台进程?

linux中如何把一个进程放在后台运行

如何检查正在运行的进程是不是是后台进程? [关闭]

linux 如何后台运行

如何在后台运行Linux命令?