在iOS中运行后台服务

Uma*_*oon 14 objective-c background-process ios

我需要编写一个iOS应用程序,每隔30分钟将数据发送到服务器.当应用程序在后台时,这可以工作吗?它有多可靠?

小智 23

在您请求的时间间隔内,无法在后台永久执行任务.您可以通过开发人员连接请求特定权限,但我必须警告您,您将需要一个非常有说服力的论点.我在下面提供了文档,也许您的请求属于可以永久运行的分组之一.或者也许您可以使用其中一个长时间运行的后台线程并以适应您正在尝试的任务的方式对其进行调整.

直接来自Apple的文档:

实现长时间运行的后台任务

对于需要执行更多执行时间的任务,您必须请求特定权限才能在后台运行它们而不会被挂起.在iOS中,只允许在后台运行特定的应用类型:

  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  • 始终让用户了解其位置的应用,例如支持需要下载和处理新内容的支持互联网协议语音(VoIP)报亭应用的导航应用应用
  • 从外部配件接收定期更新的应用程序

实现这些服务的应用程序必须声明它们支持的服务,并使用系统框架来实现这些服务的相关方面.声明服务可以让系统知道您使用哪些服务,但在某些情况下,系统框架实际上会阻止您的应用程序被挂起.

〜/行结束


har*_*man 18

在iOS7中引入了新的多任务API,因此可以无限期地运行后台任务.Apple鼓励使用NSURLSession API创建后台会话并将传输排入队列

包含"后台获取"和"远程通知" 的新UIBackgroundModes也在iOS7中引入,它有助于运行后台服务

  • 请注意,不鼓励[仅链接答案](http://meta.stackoverflow.com/tags/link-only-answers/info),SO答案应该是搜索解决方案的终点(相比之下)引用的另一个中途停留,随着时间的推移往往会变得陈旧.请考虑在此处添加独立的概要,并将链接作为参考. (12认同)