我不确定这是一个错误还是某种配置问题但是(但我把每个选项放在info.plist中,locationManager.allowsBackgroundLocationUpdates = true以及我在网上找到的所有其他提示仍然存在问题)
locationManager(manager:CLLocationManager,didUpdateLocations locations:[CLLocation]){ }
在后台(应用程序关闭)的某个(随机)时间后停止更新位置。在iphone 4s ios 8.4上,这个问题不存在。
也许其他人遇到了这个问题? 感谢
答案 0 :(得分:0)
我解决了它每隔3分钟重新启动一次位置管理器:
在你的委托方法(我的案例中为locationDidUpdateToLocation
)中添加类似
self.timeElapsedSinceLastTrackingUpdate = NSDate().timeIntervalSinceDate(self.lastUpdatedTime)
if timeElapsedSinceLastTrackingUpdate > 180 {
self.lastUpdatedTime = NSDate()
self.LocationMgr.stopUpdatingLocation()
UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({})
NSTimer.scheduledTimerWithTimeInterval(180, target: self.LocationMgr, selector: #selector(self.LocationMgr.startUpdatingLocation), userInfo: nil, repeats: false)
}
同时确保NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
和Info.plist
)
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs to use your location</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs to use your location</string>
最后,请务必在位置管理器上设置这些变量:
pausesLocationUpdatesAutomatically = false
和
allowsBackgroundLocationUpdates = true
答案 1 :(得分:0)
此外,您还可以使用重要的更改位置服务,使用此服务,即使您暂停,iOS也会唤醒您的应用
寻找:startMonitoringSignificantLocationChanges: https://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/instm/CLLocationManager/stopMonitoringSignificantLocationChanges
答案 2 :(得分:0)
我遇到了同样的问题。我找到解决这个问题的方法是转到settings
- &gt; privacy
- &gt; location services
- &gt;找到你的应用 - &gt; allow location access
- &gt;切换到never
- &gt;回到location services
- &gt;然后allow location access
再次启动您的服务。但有时只工作。
另外,据我所知(可能是我很担心。)如果准确度不够你所设定的。位置更新不会被激活。