2014-11-25 3 views
0

Мне явно не хватает чего-то основного здесь. Я занят приложением, которое отслеживает значительные изменения местоположения. Я запустил приложение. а затем полностью закрыть его. didUpdateLocations в моем делегате уволили, когда это необходимо, но мое местоположение равно нулю.iOS Значительное изменение местоположения и didUpdateLocations

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations { 
    NSLog(@"didUpdateLocations: %@", [locations lastObject]); 
    CLLocation* location = [locations lastObject]; 
    NSLog(@"latitude %+.6f, longitude %+.6f\n", 
      location.coordinate.latitude, 
      location.coordinate.longitude); 
} 

любые мысли/помощь?

Благодаря

+0

В которой IOS вы пытаетесь это? –

+0

последняя версия 8.1.1 – Ims

ответ

0

Добавьте это в PLIST

<key>NSLocationAlwaysUsageDescription</key> 
<string></string> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string></string> 

И этот код

#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 


    if(IS_OS_8_OR_LATER) { 
      [locationManager requestAlwaysAuthorization]; 
     } 
+0

Привет, я сделал это при переключении на iOS 8. – Ims

+0

работает ли он на iOS 6/7? –

+0

Я действительно не проверял, поскольку я не поддерживаю iOS 6, но я попробую iOS 7 и посмотрю, работает ли это – Ims

0

В прошивкой 9 это то, что я сделал, в PLIST я добавил:

<key>NSLocationAlwaysUsageDescription</key> 
<string>Location is required to find out where you are</string> 

В классе вы используете Core Locati Диспетчер

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 

    BOOL isInBackground = NO; 
    if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) 
    { 
     isInBackground = YES; 
    } 

    if (isInBackground) { 
     // Do something while in the background 
    } else { 
     // while in use 
    } 

} 

И в делегатом я начинаю мониторинг значимых услуг местоположение

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    NSLog(@"App going to the background"); 
    [_locationManager startMonitoringSignificantLocationChanges]; 
} 
Смежные вопросы