后台获取 iOS - 已终止的应用程序

Background Fetch iOS - Terminated Apps

我想这可能会安静地回答几次,但仍然有一些我想澄清的未知案例。

我一直在为我的 iOS 应用程序之一寻找 Background Fetch API。我从几篇文章中了解到,当 OS 决定检查是否有来自后端服务器的任何新数据时,fetchNewDataWithCompletionHandler 将被调用(无论我们设置的自定义获取间隔如何)。文章和教程说只有当您的应用程序处于 inactive/background/suspended 状态时才会调用它,而不是当用户从应用程序切换器强制终止应用程序时。

但我的问题是;

  1. 在 WWDC 2013 视频中,讲师说:

There are two very important scenario to test, first scenario is when your app launched in background to fetch new content, and second one is your app resumed in background to fetch new content.

我认为第二种情况是应用程序从 background/suspended 状态恢复。但第一种情况是什么?我们的应用将从哪个状态 "launch" 在后台获取数据?从不运行状态?

  1. 要测试后台获取,有两种选择,一种是使用 'Launch due to background fetch' 创建新方案,另一种是从调试/模拟后台获取。我认为第二个是在应用程序处于后台或挂起时模拟后台获取。但是第一种情况是什么?是否与应用程序未 运行(从应用程序切换器中删除)有关?

有什么想法吗?

谢谢!!

第一种情况是您的应用当时未 运行ning。 iOS 已决定给您的应用一些时间 运行,但您的应用尚未启动。

如果 phone 最近重新启动(因此您的应用程序从未启动过),或者如果您的应用程序因为其他事情需要内存而被终止,则很可能会发生这种情况。如果用户启动许多其他大型应用程序(例如游戏),那么您的应用程序最终将被逐出内存。

如果用户使用应用程序切换器终止了应用程序,则永远不会发生这种情况;如果用户终止了该应用程序,那么 iOS 将不会重新启动它,因为假定用户希望它保持死状态。