iOS-应用终止时的后台服务

时间:2019-04-18 06:39:56

标签: ios ios-background-mode

如果终止了应用程序,后台模式功能(例如后台获取和位置更新)是否起作用?还是仅当应用进入后台时才有效?

谢谢

3 个答案:

答案 0 :(得分:3)

是的,(大多数情况下)它会起作用,前提是您正确设置了所有内容并获得了权限。您的应用需要至少启动1次,才能订阅更新。

对于后台抓取,请在UIApplication.shared.setMinimumBackgroundFetchInterval(3600)方法中设置didFinishLaunching,实施performFetchWithCompletionHandler方法,并在后台模式下启用后台抓取。 注意尽快执行此操作,并尽快调用completionHandler。

详细了解Updating Your App with Background App Refresh here

要进行通知更新,还必须将allowsBackgroundLocationUpdates对象的CLLocationManager属性设置为true,并在后台模式下启用位置更新

详细了解Handling Location Events in the Background here

答案 1 :(得分:1)

Background fetch的工作原理类似,它允许应用程序在后台下载内容。如果该应用终止,并触发了一些下载内容的触发器,则实际上它会通过在后台静默启动该应用并下载内容来唤醒。请在下面查看有关Apple的说明。

  

上述每种模式都可以让系统知道您的应用程序应   在适当的时候被唤醒或启动以回应相关   事件。例如,一个开始播放音乐然后移动的应用   到后台仍然需要执行时间来填充音频输出   缓冲区。启用音频模式会告诉系统框架   应继续在以下位置对该应用进行必要的回调   适当的间隔。如果应用未选择此模式,则任何音频   当应用程序移至   背景。

在此,前面的模式指的是“ Background fetch, Audio and AirPlay, Location updates和应用程序的其他Bacground模式”

请参考Apple document关于后台执行。有关不同背景模式的更多信息,请参见“ Declaring Your App’s Supported Background Tasks ”。

位置更新的工作方式不同。有多种Apple服务可用于获取位置。

Significant Location service:在所有模式下均可使用。前景,背景,甚至处于终止模式。

Standard Location service:仅在FG和BG模式下有效。当应用程序处于终止模式时,它不起作用。

有关BG中位置的详细信息,请参阅Handling Location Events in the Background文档。

希望有帮助。

答案 2 :(得分:1)

如果终止了应用程序,则背景提取和位置更新是否有效?还是仅在应用进入后台时才起作用?

这取决于您在项目中使用的location service类型。请参阅下面对所有类型的定位服务的分析。

  

Standard location service:如果您实施了标准位置服务,则该服务仅适用于backgroundforeground   状态。

     

Significant location updates:如果您实施了重要的位置更新,则该更新将适用于backgroundforeground和   也terminate状态。

     

Region Monitoring:如果您实施了重要的位置更新,则该更新将适用于backgroundforeground和   也terminate状态。

     

Visits Location Service:如果您实现了访问位置服务,那么它将适用于backgroundforeground和   也terminate状态。

enter image description here

请参考以下参考文献。

Apple official doc

Raywenderlich article