iOS背景获取

我有点困惑与背景获取。 我在苹果开发者文档中看到,当操作系统决定应该这样做时,用户无法控制后台获取,而在苹果开发者论坛上,苹果员工表示,如果用户杀死应用程序(在家中双击并button向上滑动)获取不会发生,在这种情况下,用户可以控制后台获取。 那么有人请向我澄清,如果用户使用任务pipe理器杀死应用程序将背景获取仍然继续在后台或它与应用程序同时被杀死。

苹果文档:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW1

从您链接的文档:

当出现好机会时,系统会唤醒或启动您的应用程序,并调用应用程序委托的应用程序:performFetchWithCompletionHandler:方法。

所以,系统似乎能够在后台启动一个未运行的应用程序,因此它执行后台提取。 另一方面,虽然在文档的后面你可以阅读:

在大多数情况下,系统在用户强制退出后不会重新启动应用程序。 位置应用程序是一个例外,iOS 8和更高版本在用户强制退出后重新启动。 然而,在其他情况下,用户必须明确地启动应用程序或重新启动设备,然后系统才能将应用程序自动启动到后台。

所以,苹果的工程师是正确的:强制退出一个应用程序把它放在一个特殊的情况下不允许后台提取。

如果用户觉得需要允许后台操作,他不会杀死应用程序。 但是当他杀死它时,只适合禁止背景获取。 用户只能控制后台提取是否应该发生,通过允许它留在后台/通过杀死应用程序。 但是,一旦应用程序在后台,用户无法控制“何时”发生后台获取。 操作系统根据它是多么自由来决定它。

我认为这个引用(来自链接的文档)对于你描述的场景来说是最重要的:

configuration完成后,NSURLSession对象会在适当的时候无缝地将上传和下载任务交给系统。 如果任务在您的应用程序仍在运行时(在前台或后台)完成,则会话对象以通常的方式通知其委托。 如果任务尚未完成,系统终止您的应用程序,系统将自动继续在后台pipe理任务。 如果用户终止您的应用程序,系统将取消所有待处理的任务。