我们有一个完全依赖于不断位置更新的应用程序,发现手机没有获得GPS时,即使设备连接到无线网络,也不会调用didUpdateToLocation。为了进一步测试,我在第四代iPod Touch上加载了相同的结果。CLLocationManager没有更新Wifi上的位置
为了说明,当GPS可用时,应用程序可以在iPhone 4上完美运行。我们没有注意到这个问题,直到客户在他的办公室里测试了他的iPhone 4,他知道他没有获得gps。
我认为位置管理者应该支持wifi作为确定位置的方法,但这似乎并不是这种情况。
这里是我的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (locationManager==nil) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
NSLog(@"Accuracy best: %f distance filter none: %f", kCLLocationAccuracyBestForNavigation, kCLLocationAccuracyNearestTenMeters);
}
[locationManager startUpdatingLocation];
...
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{....
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{....
至于我想,没有什么特别的东西,你必须做的,使的LocationManager工作在WiFi - 现在我发现它不工作在所有。
BTW-我的手机设备是运行iOS 5 beta 7和iPod touch iOS 4.1的iPhone 4。
您是否确认它在使用GPS的iPhone 4上运行? –
是的。当GPS可用时,该代码在iPhone 4上运行时完美无瑕。 –
有趣。从我所看到的情况来看,没有理由不应该这样做。您可以查询位置监测服务是否可用。也许他们只是不允许在该设备上。 [CLLocationManager locationServicesEnabled];应该返回一个布尔值。 –