CLLocationManager不通过Wifi更新位置

时间:2011-09-15 20:55:19

标签: wifi cllocationmanager

我们有一个完全依赖于持续位置更新的应用程序,并发现当手机没有获得gps时,即使设备连接到wifi网络,也不会调用didUpdateToLocation。为了进一步进行这项测试,我将应用程序加载到第四代iPod Touch上,结果相同。

为了澄清,当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。

3 个答案:

答案 0 :(得分:1)

我发现当应用程序首次打开时,会调用didUpdateLocation ...一次。这让我觉得,当你只处理wifi时,位置经理就在 startMonitoringSignificantLocationChanges模式。

答案 1 :(得分:0)

尝试致电:

[self.locationManager startUpdatingLocation];

可能您可能还需要在self.locationManager上配置位置管理器参数。

答案 2 :(得分:0)

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