2014-09-19 18 views
8

Xcode 6/iOS 8 SDK ile güncelledikten sonra simülatördeki konum servis simülasyonum çalışmaya başlamadı. Güncellemeden önce iyiydi (Şu anda gerçek cihazda test edemiyorum). Simülasyon için bir yer seçtiğimde, hiçbir şey olmuyor. Delegate'in -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations yöntemi çağrılmıyor. Xcode'u yeniden başlattım, derleme klasörünü temizledim, hiçbir şey değişmedi. Bu neden olabilir?Xcode 6/iOS 8 Konum Simülasyon çalışmıyor

cevap

14

IOS 8'den bu yana CLLocationManager'ı başlatmadan önce yetkilendirme isteğinde bulunmanız gerekir.

Bu yöntemlerden birini mi arıyorsunuz? Eğer XCode 6 önce projeyi oluşturduysanız

[self.locationManager requestWhenInUseAuthorization]; // For foreground access 
[self.locationManager requestAlwaysAuthorization]; // For background access 

, muhtemelen aynı zamanda yeni izin Info.plist giriş eklemek gerekir. Daha fazla ayrıntı için

bu yazı bir göz: Location Services not working in iOS 8

14

sizin info.plist dosyası adresinden yöntemle Ayrıca

if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) 
{ 
    [self.locationManager requestWhenInUseAuthorization]; 
} 

satırının altında eklemek kod Aşağıda ekle

Anahtar: NSLocationWhenInUseUsageDescription değeri: Kullanımları şu anki konum

+0

Herkes bu ile sorunları olan bir süre mücadele etti her zaman 've' kullanımdayken '. Bu çözüm işe yarıyor, ancak ** doğru kullanım tanımlama türünü **, yani "NSLocationWhenInUseUsageDescription" veya "NSLocationAlwaysUsageDescription" (veya belki her ikisini de) olarak bildirdiğinizden emin olun. – 1owk3y

0

Diğer cevaplar doğru, ancak ben de simülatörü sıfırlamak zorunda kaldım Bir yer alabiliyorken, bir cihazda iyi çalışıyordu. Uygulamanın başlangıçta simülatörünü sıfırlamak için iOS 8.

önce bu simülatörde yüklendiği:

https://stackoverflow.com/a/16195931

2

Ben konumu seçimi durdurma güncellenmesi oldu Xcode 6.3.1 kullanma. Düzeltme başka bir proje yürütmek, "Konumu Simüle Etme Konumu Simüle Et" i seçtikten sonra normal konum ayarını yeniden başlatmak için orijinal projeyi yeniden oluşturmaktı. `Uygulamasında, ancak .plist dosyasında` NSLocationAlwaysUsageDescription` ilan etmişti ('farka dikkat; ı `[locationManager requestWhenInUseAuthorization] kullanıyordum çünkü

0
- (void)startLocationUpdates{ 
    geocoder = [[CLGeocoder alloc] init]; 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 
     [locationManager requestWhenInUseAuthorization]; 
    [locationManager startUpdatingLocation]; 
} 

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

     CLLocation *currentLocation = newLocation; 
    if (currentLocation != nil) { 
    } 

    // Reverse Geocoding 
    [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) { 

     if (error == nil && [placemarks count] > 0) { 
      placemark = [placemarks lastObject]; 
         fullAddress = [NSString stringWithFormat:@"%@,%@,%@,%@", 
          placemark.thoroughfare, 
          placemark.locality, 
          placemark.administrativeArea, 
          placemark.country]; 

      subtitleLocation = [NSString stringWithFormat:@"PostalCode::%@", 
           placemark.postalCode]; 
     } else { 
      // NSLog(@"%@", error.debugDescription); 
     } 
    } ]; 
} 

- (void)locationManager:(CLLocationManager *)manager 
     didFailWithError:(NSError *)error{ 

    NSLog(@"Cannot find the location."); 
}