目前,正在开发一个需要从 CLLocationManager 获取最后位置的应用程序(没有任何定期跟踪)。不管多少岁,它是准确的。我不需要也不想开始跟踪——我只需要从缓存中获取最后一个位置就可以了。恕我直言,CLLocationManager 是 iOS 中的共享组件,如果某个应用程序使用位置跟踪,那么另一个应用程序应该能够使用 CLLocationManager.location 中的最新位置。只需分配/初始化 CLLocationManager 并获取其位置就足够了。然而事实并非如此。我已经在 iPhone4 上进行了测试 - 启动了谷歌地图,看到了我当前的位置,然后转到了我的应用程序,但是在 [[CLLocationManager alloc] init] 位置属性之后为 nil。
更新:尝试 [locationManager startUpdatingLocation];和 [locationManager stopUpdatingLocation];但结果是一样的。我想,唯一的解决方案是开始定期跟踪?
UPDATE2:很奇怪,但是在 CLLocationManager 的 alloc/init 之后没有“应用程序想要使用位置服务”的警报。这是我的代码片段:
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
[locationManager stopUpdatingLocation];
NSLog(@"%@", locationManager.location); //prints nil