我一直在用swift为iOS开发一款使用定位服务的应用程序。在ios9之前,它一直都很棒。出于某种原因,我的应用程序在后台运行时停止运行,但仅在物理设备上运行。模拟器在后台运行良好。我正在通过NSLog记录东西,所以我可以分辨出它在设备上停止了,而不是在sim上。
是的,我已经设置了info.plist。是的,我已经打开了后台功能。这在iOS8中确实有效,但由于某些原因,在9版本中,应用程序停止在后台执行。
我在设置中打开了后台刷新,我的应用程序被设置为总是请求位置更新,这也在手机的设置中打开。
我有点迷惑为什么会发生这种情况,所以我猜可能有一些xcode7和/或ios9的代码更改,我需要实现。
非常感谢您的帮助!
抢夺
发布于 2015-10-08 22:39:43
因此,苹果似乎需要在iOS9中引入一种新功能:
allowsBackgroundLocationUpdates = true这是为位置管理器准备的。
我的最终代码如下所示:
// this is needed for ios9 to get the location even when it's backgrounded
if #available(iOS 9.0, *) {
self.locationManager.allowsBackgroundLocationUpdates = true
} else {
// Fallback on earlier versions
}https://stackoverflow.com/questions/32994680
复制相似问题