修改
我的应用应该在前台,后台和暂停时识别出重要的位置变化和区域变化。当allowBackgroundLocationUpdates设置为true并且UIBackgroundMode" location"在Info.plist中设置
Apple在app评论中写道,我的应用程序没有需要连续位置跟踪的功能,而且UIBackgroundMode" location"不需要。苹果是对的,因为我只需要重要/区域检测。所以我们应该禁用UIBackgroundMode" location"。但是当我这样做时,我必须将allowsBackgroundLocationUpdates设置为false并禁用重新启动。如何在不设置UIBackgroundMode" location"?
的情况下启用重要的位置更改和区域监控重新启动我在Apple文档中找到的内容:
讨论
希望在挂起时接收位置更新的应用必须在其应用的Info.plist文件中包含UIBackgroundModes键(带位置值),并将此属性的值设置为true。后台更新需要存在具有位置值的UIBackgroundModes键;您使用此属性根据应用程序的行为启用和禁用该行为。例如,只有在用户在应用程序中启用需要进行后台更新的功能后,才可以将值设置为true。
当此属性的值为false时,应用程序会根据其当前授权在前台或后台运行时正常接收位置更新。更新仅在应用程序暂停时停止,从而阻止应用程序被唤醒以处理这些事件。
此属性的默认值为false。将值设置为true但在应用程序的Info.plist文件中省略UIBackgroundModes键和位置值是程序员错误。
更新16.10.2017
我刚刚在一部真正的手机上测试了这个。并且allowBackgroundLocationUpdates设置为false,应用程序仍然从sdk11,ios 10.3.1上的suspend重新启动。这与文档不同,但我的问题现在已经解决了。 -