Gps位置图标未关闭

时间:2012-10-27 04:45:06

标签: iphone ios xcode cllocationmanager

在我的应用中,我实施了Cllocation管理器以使用当前用户位置&它工作正常。但是当应用程序进入后台或终止时,GPS位置图标会自动隐藏在ipod中。当我尝试使用Iphone时,图标不会隐藏。

所以,我找不到任何解决方案。帮帮我!!

我的代码如下:

AppDelegate.m

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

if(locationManager == nil)

        locationManager =[[CLLocationManager alloc] init];

    self.locationManager.delegate = self;

    self.locationManager.desiredAccuracy= kCLLocationAccuracyBest;

    self.locationManager.distanceFilter= 5;

    [locationManager startUpdatingLocation];
    [locationManager startUpdatingHeading];
}


-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

    self.userLocation=newLocation;

    [self.locationManager startMonitoringSignificantLocationChanges];
}

Map.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [APPDELEGATE.locationManager startUpdatingLocation];

}

- (void)viewWillAppear:(BOOL)animated
{
    self.map.delegate = self;

    [self.map setShowsUserLocation:YES];
}

如果我在ipod中为我的应用程序手动定位服务,当应用程序关闭时,它不会显示位置图标。但是当我在iphone中尝试相同时,它会显示位置图标。

2 个答案:

答案 0 :(得分:1)

最后我解决了这个问题,如下所示。

而不是

[self.locationManager startMonitoringSignificantLocationChanges]; 

在appdelegate

我写道,

[self.locationManager stopMonitoringSignificantLocationChanges];

答案 1 :(得分:0)

我认为你真正想要的是:

[self.locationManager stopUpdatingLocation];

之后,如果您希望经理在重要位置更改时醒来,请致电:

[self.locationManager startMonitoringSignificantLocationChanges];

相反的情况适用于返回持续更新:

[self.locationManager stopMonitoringSignificantLocationchanges];
[self.locationManager startUpdatingLocation];

注意:在显着位置更改模式下,状态栏中的图标仍将显示与更新位置连续时相同的图标。这不是一个值得关注的问题,因为在保守模式下它仍然在不需要时关闭位置服务 ipod不支持startMonitoringSignificantLocationChanges。这就是为什么指标在两个设备上的表现不同。

您应该考虑到,正如您实施的那样,您正在使用任何第一个事件报告来管理经理。这通常可能是陈旧的,缓存的,旧的或非常可能非常不准确。标准做法是使用一些测试,并根据需要为您提供更合适的位置信息。

在使用位置服务时,请参阅Github上的my handler以获取更多帮助。