0

编辑:

我的应用在前台、后台和挂起时应该能够识别出显着的位置变化和区域变化。当 allowBackgroundLocationUpdates 设置为 true 并且在 Info.plist 中设置 UIBackgroundMode “location”时,此方法有效

Apple 在应用程序评论中写道,我的应用程序没有需要持续位置跟踪的功能,并且不需要 UIBackgroundMode“位置”。苹果是对的,因为我只需要显着/区域检测。所以我们应该禁用 UIBackgroundMode “位置”。但是当我这样做时,我必须将allowBackgroundLocationUpdates 设置为false 并禁用重新启动。

如何在不设置 UIBackgroundMode“位置”的情况下启用重大位置更改和区域监控的重新启动?

我在 Apple 文档中找到的内容:

讨论

想要在挂起时接收位置更新的应用程序必须在其应用程序的 Info.plist 文件中包含 UIBackgroundModes 键(带有位置值),并将此属性的值设置为 true。后台更新需要具有位置值的 UIBackgroundModes 键;您可以使用此属性来启用和禁用基于应用程序行为的行为。例如,您可以仅在用户在您的应用中启用需要后台更新的功能后将该值设置为 true。

当此属性的值为 false 时,应用程序在根据当前授权在前台或后台运行时正常接收位置更新。更新仅在应用程序暂停时停止,从而防止应用程序被唤醒以处理这些事件。

此属性的默认值为 false。将值设置为 true 但在应用的 Info.plist 文件中省略 UIBackgroundModes 键和位置值是程序员错误。

更新 16.10.2017

我只是在真机上测试了这个。在allowBackgroundLocationUpdates 设置为false 的情况下,应用程序仍会从sdk11、ios 10.3.1 上的挂起重新启动。这不像文档中的那样,但我的问题现在已经解决了。——</p>

4

0 回答 0