即使终止应用程序也下载数据

时间:2018-10-29 10:44:19

标签: ios swift api background

应用程序终止后,是否可以下载数据?我想在特定时间下载数据以获取我的API中的新更新。而且,如果用户在后台再次下载数据,然后再次运行应用程序,则用户无需等待下载新数据。

4 个答案:

答案 0 :(得分:0)

如果正在提供内容的应用程序[服务器]已终止,则答案为否。 (没有任何东西可以继续将数据写出到缓冲区/流中了)

您将需要提供有关应用程序问题的更多详细信息,以确定是否存在可以实施 的某种缓存层,以便在某些情况下可以恢复下载。

答案 1 :(得分:0)

否,当您的应用被用户终止时,您将无法继续下载!您的应用必须保持在后台状态!!!!因为如果用户强行关闭应用程序意味着那他不想再运行它。如果您的应用被系统挂起,则可以唤醒它,但如果被用户终止,则不能唤醒它!

答案 2 :(得分:0)

请参阅两种类型的终止,一种是用户从应用程序切换器执行的终止,另一种是iOS的终止。如果用户终止,则不可能在后台执行任何操作。但是,如果iOS终止了您的应用,它可以继续下载或后台任务。查看有关NSURLsession的后台下载以获取更多信息。

https://developer.apple.com/documentation/foundation/url_loading_system/downloading_files_in_the_background?language=objc

https://www.raywenderlich.com/567-urlsession-tutorial-getting-started

答案 3 :(得分:0)

我同意其他答案。当您的应用被用户终止时,您将无法继续下载! 但是我不同意后台应用程序刷新。

后台应用刷新

这里是Apple's definition :

  

切换到其他应用程序后,某些应用程序会运行一小段时间,然后才会设置为暂停状态。处于暂停状态的应用不会积极使用,打开或占用系统资源。使用后台应用刷新,暂停的应用可以检查更新和新内容。

这里还有另一个doc

  

需要定期检查新内容的应用程序可以要求系统将其唤醒,以便它们可以启动该内容的提取操作。   ...   启用此模式并不能保证系统会给您的应用程序任何时间执行后台提取。

iOS会尝试预测用户下次何时启动应用程序。当用户启动应用程序时,iOS在后台启动应用程序以更新内容。

另一种更新内容的方法是使用“推送通知”

Here is from Apple's doc

  

如果当您的应用有新内容可用时,服务器将推送通知发送到用户的设备,则可以要求系统在后台运行您的应用,以便它可以立即开始下载新内容。

通知的有效负载必须包含content-available键,其值设置为1。此键使iOS知道通知处于静默状态。 Pushing Updates to Your App Silently.