我读过很多关于我的iOS应用程序地理围栏的教程(例如here),但没有一本提到iOS是否允许在应用程序关闭时处理任何特定于应用程序的位置数据.
例如,我知道当应用程序在后台时,这些服务仍然会存在(如果编码正确),但当用户双击home按钮并关闭应用程序时,情况如何?仍然可以获得位置数据吗?
我读过很多关于我的iOS应用程序地理围栏的教程(例如here),但没有一本提到iOS是否允许在应用程序关闭时处理任何特定于应用程序的位置数据.
例如,我知道当应用程序在后台时,这些服务仍然会存在(如果编码正确),但当用户双击home按钮并关闭应用程序时,情况如何?仍然可以获得位置数据吗?
根据Apple Documentation,在Using Regions to Monitor Boundary Crossings部分:
在iOS中,您向location manager注册的区域将保持不变
是的,您的应用程序将被唤醒(或重新启动!)当系统的位置检测到你进入/退出(取决于你的设置)一个所需的区域时,这当然是即使你的应用程序没有运行.你只需要在应用程序委托中正确处理它,当应用程序重新启动时,你会在选项字典中获得一个UIApplicationLaunchOptionsLocationKey
键.有关详细信息,请参阅下面的文档链接.
请记住,iOS 6中不推荐使用-startMonitoringForRegion:desiredAccuracy:
方法,因此不应使用它.而是使用-startMonitoringForRegion
.
要知道在发生位置事件后重新启动应用程序时如何处理,请参阅文档here,您将看到的信息在不推荐使用的方法的讨论中,但它仍然应该是相关的,我相信苹果在不推荐使用旧方法时忘了将这些信息迁移到新方法.我已经向他们提交了一个bug.
UPDATE
在我的错误报告之后,苹果更新了CLLocationManager的文档.文档现在指定了应用程序在终止后启动或不启动的位置监控类型.