2011-09-15 56 views
1

我们有一个完全依赖于不断位置更新的应用程序,发现手机没有获得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。

+0

您是否确认它在使用GPS的iPhone 4上运行? –

+0

是的。当GPS可用时,该代码在iPhone 4上运行时完美无瑕。 –

+0

有趣。从我所看到的情况来看,没有理由不应该这样做。您可以查询位置监测服务是否可用。也许他们只是不允许在该设备上。 [CLLocationManager locationServicesEnabled];应该返回一个布尔值。 –

回答

1

我发现didUpdateLocation正在被调用...一次,当应用程序第一次打开。它使我认为,当你只处理wifi时,位置管理器只在 startMonitoringSignificantLocationChanges模式下。

0

尝试调用:

[self.locationManager startUpdatingLocation]; 

可能的,你可能需要在self.locationManager配置位置管理器参数以及。

0

听起来好像您的Wi-Fi接入点是未知的。为了确保它不是编码错误,请在模拟器中启动Safari并查看它是否找到您的位置。如果没有,问题是您未知的Wi-Fi接入点。解决方案是让你的AP知道外界。为此,请转至http://www.skyhookwireless.com并阅读说明。此站点可让您更新XPS系统中的Wi-Fi接入点信息。注意:我花了六个星期才接通电话,但它现在起作用了。