如果应用程序终止,后台获取和位置更新等后台模式功能是否有效?还是只有在应用程序进入后台时才有效?
谢谢
是的,如果您正确设置了所有内容并拥有权限,它(大多数情况下)可以正常工作。您的应用需要至少启动 1 次,才能订阅更新。
对于后台获取,UIApplication.shared.setMinimumBackgroundFetchInterval(3600)
在didFinishLaunching
方法中设置,实现performFetchWithCompletionHandler
方法,并在 Background Modes 中启用 Background Fetch。注意尽快做,尽快调用completionHandler。
在此处阅读有关使用后台应用刷新更新您的应用的更多信息
对于通知更新,您还必须将对象的allowsBackgroundLocationUpdates
属性设置为,并在后台模式中启用位置更新。CLLocationManager
true
在此处阅读有关在后台处理位置事件的更多信息
Background fetch
就像,它允许应用程序在后台下载内容。如果应用程序终止并获得一些下载内容的触发器,它实际上会通过在后台静默启动应用程序并下载内容来唤醒。请参阅下面的 Apple 说明。
上述每种模式都让系统知道您的应用程序应该在适当的时间被唤醒或启动以响应相关事件。例如,一个开始播放音乐然后移动到后台的应用程序仍然需要执行时间来填充音频输出缓冲区。启用音频模式会告诉系统框架它们应该继续以适当的时间间隔对应用程序进行必要的回调。如果应用程序未选择此模式,则当应用程序移至后台时,应用程序正在播放或录制的任何音频都会停止。
这里,前面的模式是指Background fetch, Audio and AirPlay, Location updates and other Background modes of the app
。
请参阅有关后台执行的Apple 文档。有关不同背景模式的更多信息,请参阅Declaring Your App’s Supported Background Tasks
。
位置更新的工作方式不同。有多种 Apple 服务可用于获取位置。
Significant Location service
: 它适用于所有模式。前景、背景,甚至在终止模式下。
Standard Location service
: 仅在 FG 和 BG 模式下有效。当应用程序处于终止模式时,它不起作用。
有关 BG 中位置的更多详细信息,请参阅后台文档中的处理位置事件。
希望能帮助到你。
如果应用程序终止,后台获取和位置更新工作?还是只有在应用程序进入后台时才有效?
这取决于location service
您在项目中使用的类型。请参阅下面对所有类型的定位服务的分析。
标准位置服务:如果您实施了标准位置服务,那么它将仅适用于
background
和foreground
状态。重要的位置更新:如果您实施了重要的位置更新,那么它也适用于
background
和foreground
stateterminate
。区域监控:如果您实施了重要的位置更新,那么它也适用于
background
,foreground
和terminate
state 。访问位置服务:如果您实施了访问位置服务,那么它也适用于
background
和foreground
stateterminate
。
请参考以下参考资料。