2017-02-27 103 views
0

最近我从我的客户那里得到要求,我们需要在后台处理一些执行。此执行可能会持续10分钟或20分钟。如何在iOS中实现长时间运行的任务?

有什么办法可以达到这个目的吗?我知道iOS列出了只有那些可以在后台运行的应用程序类型&。但我检查了&我的应用程序不适合列出所有应用程序类型。所以现在我对此感到怀疑。

任何人都有解决方案?

感谢 希亚姆

+0

这个[文件]看看(https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution。 html)寻找这部分“执行有限长度的任务”,我认为这解决了你的问题。因为你有一个不是无限的后台任务,你可以要求更多的时间来完成任务 –

+0

@ user3347272检查我的答案。 –

+0

José的链接是最好的解决方案。没有完整的解决方案来满足您的要求。您无法在后台任意长时间运行iOS应用。即使您提出了一些棘手的解决方法,App Store也会明确禁止。无论如何,运行图像处理10-20分钟对于iPhone而言都是太多的电池消耗。这不适合在设备上执行。 –

回答

0

使用背景取在功能可用。

后台提取模式每10分钟执行一次。

样本代码听到:https://mobisoftinfotech.com/resources/mguide/background-fetch-ios/

从上面的教程忘记该方法beginBackgroundUploadTask

+0

在这里我的背景任务是不从互联网上下载一些内容。我的后台任务在本地运行,并在后台执行一些图像处理。所以这里这个背景获取将不起作用。 – user3347272

+0

后台提取只会让您花几秒钟下载一些数据。这不是运行任意长的流程。仅仅因为你要求10分钟并不意味着你会得到它。该系统可以并且确实会限制你的速度。 –

0

//试试这个:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul), ^(void) { 
     // Perform long running process 

dispatch_async(dispatch_get_main_queue(), ^{ 
     // Update the UI 

}); 
}); 
// Continue doing other stuff 
+0

它可以帮助无限时间运行长时间运行的任务吗? – user3347272

+0

此代码与应用程序处于前台时运行后台队列相关。我相信这里的问题是如何在应用程序本身处于后台时运行进程。 –

相关问题