在我的应用中,我实施了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中尝试相同时,它会显示位置图标。
答案 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以获取更多帮助。