iphone重要位置事件与细胞变化无关

时间:2011-06-16 22:54:01

标签: iphone ios

我一直在使用ios上的重要事件位置管理器,但它似乎不是基于所声称的单元格更改。

我使用了一个利用重要位置事件的简单应用程序,但我无法从ios sdk获得可重复,一致或敏感的响应。

我在下面的地图上绘制了路线(蓝线),手机信号塔(地方标记)和1000平方米的网格(蓝色方块)。 map showing route

路线距离为5000米。

我开了3次。

  • TEST1。收到2个sig活动
  • TEST2。无
  • TEST3。收到1个sig活动

在你抱怨我的测试太小之前,我一直在监测其他测试路线几天,并且都显示出不一致的形状。

我期待sig事件基于手机信号塔切换。所以我使用了一个名为'signal'的越狱应用程序来识别什么是活动细胞。 (NB。令人惊讶的是哪个细胞活跃。不是我所期望的。)

从监测'信号'应用程序开始,细胞切换到我注意到的6-7倍。

但我没有收到6-7个sig事件。所以我看不出细胞转换和重大事件之间的任何关联。

所以我有以下问题

  • Q1。什么是重大事件触发器?
  • Q2。为什么结果不可靠/不一致。
  • Q3。如何才能让我的应用程序获得500米的一致且敏感的重要事件?

这是在测试应用程序中运行的代码

 -(void)initLocationManager {
     if (locationManager == nil) {
         self.locationManager = [[[CLLocationManager alloc] init] autorelease];
         locationManager.delegate = self;
         locationManager.desiredAccuracy = kCLLocationAccuracyBest;
         [locationManager startUpdatingLocation];
         [locationManager stopUpdatingLocation];
         [locationManager startMonitoringSignificantLocationChanges];

     }
 }
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [self initLocationManager];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation
  fromLocation:(CLLocation *)oldLocation {
     NSLog(@"%@", newLocation);
     [[NSNotificationCenter defaultCenter]
 postNotificationName:@"PositionUpdate" object:nil];
 }

-lp

3 个答案:

答案 0 :(得分:4)

重要的位置更改由iOS决定,您无法直接更改其粒度。请注意,仅在iOS 4中才使用单元塔位置。未来版本的操作系统将改善这一点。

但是作为一种解决方法,当应用程序因重大位置更改而被唤醒/启动时,您可以打开正常的CoreLocation位置更新。然后,一旦获得完美结果,再次禁用位置监控以允许应用程序恢复休眠状态。

答案 1 :(得分:1)

我刚用我的应用程序在旧金山中心进行了3公里的测试步行,并且还获得了零重要变更位置事件。我在我的应用中切换到kCLLocationAccuracyHundredMeters更改为正常轮询,并在同一距离内获得了40多个事件。

回应本文和其他地方的各种其他答案的情绪,我暂时停止重大改变直到iOS 5.我认为现在最好的事情就是自己动手的业务逻辑来轮询旧的核心位置方式,随着时间的推移(或其他东西)逐渐降低棘轮频率以便电池友好。

似乎在iOS 4中,重要更改更适合于告诉您所在的通勤的哪一端,而不是您所在的块(甚至是邮政编码)。

答案 2 :(得分:0)

我不确定您是否已经看过这个 - 但WWDC 2010会话115(在iOS中使用核心位置)可能会让您更好地了解重要的位置更改API。