我看到iBeacon ranging在iOS 8.X和iOS 9测试版上的工作方式有很大的不同。
在iOS 8.X上,我可以在后台测距信标(当应用程序在后台且屏幕关闭时,测距仍可继续工作),但在iOS 9上,一旦应用程序转到后台,它就会停止,打开和关闭屏幕,将恢复测距几秒钟,然后再次停止。
还有没有人经历过这种情况?如果是这样,你有没有找到iOS 9的解决方案?
发布于 2015-09-10 17:52:28
好的,在我用来定位信标的CLLocationManager上设置allowsBackgroundLocationUpdates = YES似乎解决了这个问题,而且我可以像以前一样继续在后台定位信标了。
发布于 2016-10-20 23:36:46
如果你使用IOS9或更高版本,你应该添加所有请求location语句,只要应用程序正在运行(即未挂起),仍然允许访问location,并且具有足够的授权(例如,它具有WhenInUse授权并正在使用中,或者它始终具有授权)。
[self.locationManager requestAlwaysAuthorization];
[self.locationManager requestWhenInUseAuthorization];现在,要允许后台模式,您需要添加此链接self.locationManager.allowsBackgroundLocationUpdates = YES;
讨论:默认情况下,对于链接到iOS 9.0或更高版本的应用程序,这是NO,而不管最低部署目标是什么。
使用UIBackgroundModes set to include "location" in Info.plist时,当UIBackgroundModes不包含"location“是一个致命错误时,必须将此属性设置为YES。
将此属性重置为NO相当于在UIBackgroundModes值中省略"location“。
发布于 2015-09-16 00:22:02
我已经从 Personnaly那里复制了Gualtier的回复,我发现它非常有帮助,有一个清晰的解释!希望这能帮助你,
无论哪种情况,位置更新都将开始。不同的是,当应用程序在前台(并且设置了“location”UIBackgroundMode )时调用startUpdatingLocation时,系统会为你的应用程序保存一个后台任务断言;这意味着只要位置更新正在运行,你的应用程序就不会挂起。
如果您的应用程序在后台中调用startUpdatingLocation,CoreLocation仍然会通过启动您的应用程序的位置更新来响应,但系统将不再为您保留断言,并且一旦在后台的允许时间过后,您的应用程序将暂停。文档在技术上是正确的-你可以从任何一个状态开始位置更新-保持活动而不被挂起是另一回事。
这个时间(目前)是10秒,这就是为什么你认为更新会在10秒后停止。但实际上,您的应用程序现在处于挂起状态,无法再接收更新。有一种方法可以通过使用beginBackgroundTaskWithExpirationHandler将此持续时间延长到(目前)最多3分钟:(在此处阅读更多信息:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW1
这个延长的时间是否足够取决于你的应用程序。
如果您尝试等到较晚开始位置更新的目标是省电,也有其他方法。-如果它适合您的用例,重要的位置更改服务非常高效,并且与标准位置服务结合使用是更好的匹配-您可以在应用程序处于前台时启动位置更新,并在应用程序处于后台时推迟位置更新。当你的应用程序跟踪有起点和终点的旅程时,在旅途中运行位置更新,而推迟更新可能适合你的情况。当更新被推迟时,系统会在确定这样做是节能的时候唤醒你的应用程序。你可以在这里阅读更多关于它的内容:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW14
此外,我建议您观看WWDC2015演示文稿“核心位置的新特性”,以了解iOS 9中的新特性。有一种新方法可以轻松地获取您可能感兴趣的当前位置,并且有一个额外的步骤可以使后台位置更新生效。视频在这里:https://developer.apple.com/videos/wwdc/2015/?id=714
https://stackoverflow.com/questions/32478169
复制相似问题