当应用程序关闭并强制退出时,Dropbox Carousel 如何同步?

How does Dropbox Carousel sync when the app is closed and force-quit?

我一直在尝试查找有关此的信息,但似乎找不到任何信息。我有一些想要实现的想法,希望即使应用程序不在应用程序切换器中,我也可以进行后台同步。这个 Stack Qverflow question 似乎是说 iOS 不会让应用程序在用户强制退出时唤醒并执行任务。我放弃了那个想法,直到现在。

我最近安装了 Dropbox Carousel 并一直使用它来自动上传照片。我预计我必须每隔一段时间打开应用程序才能将照片上传到 Dropbox。但是,当它完全关闭(强制退出)时,当我在我的电脑前时,我注意到文件被添加到 Dropbox。

不知何故,Carousel 正在后台上传照片,即使该应用程序不在应用程序切换器中。 Dropbox 是如何做到的?我错过了什么吗?

我间歇性地注意到这种行为,它不像照片会立即上传,而是在特定的时间间隔内,我根本没有打开应用程序,也没有我采取任何行动,批量上传(phone刚刚连接到 WiFi,屏幕关闭)。

应用可能可以通过几种方式在后台运行:

  1. 将自己注册为位置感知应用程序。当您随身携带设备并导致位置更改事件时,系统会给应用程序一些时间 运行。
  2. 应用程序可以做到 "background refresh".
  3. 应用可以"silent content-available"推送通知。

该应用程序可能正在使用所有 3 个选项。您可以通过以下方式进行测试:

  1. 禁用定位服务:设置 => 隐私 => 定位服务
  2. 禁用后台刷新:设置 => 常规 => 后台应用刷新
  3. 禁用推送通知:设置 => 通知

或者简单的检查App是否在上面3个地方都有列出

如果用户未明确启动,该应用将不会在应用切换器中列出。

我最好的猜测是 Carousel(以及所有具有类似后台上传功能的 iOS 应用程序)使用 Significant-Change Location Service 进行后台上传。此服务会唤醒应用程序,即使它已被终止(强制退出)。

If you leave the significant-change location service running and your iOS app is subsequently suspended or terminated, the service automatically wakes up your app when new location data arrives. At wake-up time, the app is put into the background and you are given a small amount of time (around 10 seconds) to manually restart location services and process the location data.

Carousel docs 给出了他们正在使用此技术的额外提示:“您 iPhone 所在位置的重大变化”。