【发布时间】:2019-09-08 11:01:18
【问题描述】:
如果应用程序终止,后台模式功能(如后台获取和位置更新)是否有效?还是只有应用进入后台才有效?
谢谢
【问题讨论】:
如果应用程序终止,后台模式功能(如后台获取和位置更新)是否有效?还是只有应用进入后台才有效?
谢谢
【问题讨论】:
是的,它(大部分时间)都有效,如果您正确设置了所有内容并拥有权限。您的应用需要至少启动 1 次,才能订阅更新。
对于后台获取,在didFinishLaunching 方法中设置UIApplication.shared.setMinimumBackgroundFetchInterval(3600),实现performFetchWithCompletionHandler 方法,并在后台模式中启用后台获取。
注意尽快做,尽快调用completionHandler。
阅读更多Updating Your App with Background App Refresh here
对于通知更新,您还必须将CLLocationManager 对象的allowsBackgroundLocationUpdates 属性设置为true,并在后台模式中启用位置更新。
【讨论】:
Background fetch 的作用类似于,它允许应用程序在后台下载内容。如果应用程序终止并获得一些下载内容的触发器,它实际上会通过在后台静默启动应用程序并下载内容来唤醒。请参阅下面的 Apple 说明。
上述每种模式都让系统知道您的应用应该 在适当的时候被唤醒或启动以响应相关的 事件。例如,一个开始播放音乐然后移动的应用程序 到后台仍然需要执行时间来填充音频输出 缓冲区。启用音频模式告诉系统框架他们 应继续在以下位置对应用程序进行必要的回调 适当的间隔。如果应用程序没有选择此模式,任何音频 当应用程序移动到 背景。
这里,前面的模式指的是Background fetch, Audio and AirPlay, Location updates and other Background modes of the app。
请参阅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文档。
希望对你有帮助。
【讨论】:
如果应用程序终止,后台获取和位置更新是否有效?还是只有在应用进入后台时才有效?
这取决于您在项目中使用的location service 类型。请参阅下面对所有类型的位置服务的分析。
Standard location service: 如果您实施了标准位置服务,那么它将仅适用于
background和foreground状态。Significant location updates:如果您实施了重要的位置更新,那么它将适用于
background、foreground和terminate状态也是如此。Region Monitoring: 如果您实施了重要的位置更新,那么它将适用于
background、foreground和terminate状态也是如此。Visits Location Service:如果您实施了访问定位服务,那么它将适用于
background、foreground和terminate状态也是如此。
请参考以下参考资料。
【讨论】: