Właśnie zaktualizowałem pakiet SDK do Xcode 6/iOS 8, a moja symulacja usługi lokalizacyjnej w symulatorze nie działa. To było w porządku, zanim zaktualizowałem (obecnie nie mogę testować na prawdziwym urządzeniu). Teraz, gdy wybiorę lokalizację do symulacji, nic się nie dzieje. Metoda delegata -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
nie jest wywoływana. Uruchomiłem ponownie Xcode, wyczyściłem folder kompilacji, nic się nie zmieniło. Dlaczego tak się dzieje?Symulacja lokalizacji Xcode 6/iOS 8 nie działa
Odpowiedz
Od czasu IOS 8 należy poprosić o autoryzację przed uruchomieniem menedżera CLLocationManager.
Czy wywołujesz jedną z tych metod?
[self.locationManager requestWhenInUseAuthorization]; // For foreground access
[self.locationManager requestAlwaysAuthorization]; // For background access
Jeśli utworzyłeś projekt przed XCode 6, prawdopodobnie będziesz musiał dodać wpis info.plist dla nowego uprawnienia.
Aby uzyskać więcej informacji zajrzyj na tym stanowisku: Location Services not working in iOS 8
Dodaj poniższy kod w metodzie
if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])
{
[self.locationManager requestWhenInUseAuthorization];
}
także dodać poniższy wiersz w pliku info.plist
kluczowe: NSLocationWhenInUseUsageDescription
Wartość: Zastosowania obecna lokalizacja
Inne odpowiedzi są poprawne, ale musiałem też zresetować symulator z tego względu mogłem uzyskać lokalizację, podczas gdy urządzenie działało dobrze. Aplikacja została wstępnie zainstalowana na tym symulatorze przed iOS 8.
Aby zresetować symulatora:
Korzystanie Xcode 6.3.1 miałem wybór lokalizacji zatrzymania aktualizacji. Poprawka polegała na uruchomieniu innego projektu, wybierz "Symuluj lokalizację> Nie symuluj położenia", a następnie ponownie utwórz oryginalny projekt, aby wznowić normalne ustawienie lokalizacji.
- (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.");
}
- 1. Domyślna symulacja Xcode
- 2. Qt nie działa od Xcode 8
- 3. Xcode 8 zabaw live view nie działa
- 4. Symulacja lokalizacji na urządzeniu Real iOS
- 5. Aktualizacja lokalizacji kodu Xcode
- 6. CLLocationManager nie działa cały czas (iOS 8 Xcode 6)
- 7. Swift 3, Xcode 8 Instantiate View Controller nie działa
- 8. Xcode 8 Memory Graph mówi "Brak wyboru" i nie działa
- 9. Jak działa symulacja silnika Simulink?
- 10. Argumenty testowania lokalizacji kodu Xcode
- 11. iOS 9 Odroczona aktualizacja lokalizacji nie działa
- 12. Symulator Windows 8 nie działa
- 13. Odbicie java 8 nie działa
- 14. Xcode 8 Nie wyświetla całego wyjścia NSLog
- 15. xcode 8 Debugger "Nie można rozwiązać typu"
- 16. Nie można zaktualizować do Xcode 8
- 17. label.layer.borderColor = .... nie działa (Xcode 4.3.2)
- 18. Wyszukiwanie Xcode nie działa prawidłowo
- 19. UsageDescription w Xcode 8
- 20. Jak działa błąd w Swift w Xcode 8 beta 4
- 21. XCode: Debug => punkt menu „Symulacja Lokalizacja” niedostępne (wyszarzone)
- 22. Xcode 8 Błąd podpisania kodu
- 23. xcode iOS uzyskiwanie listy wszystkich lokalizacji
- 24. Układ Adaptacyjny w Xcode 8
- 25. Rozszerzenie Xcode 8 wykonujące NSTask
- 26. Powolne autouzupełnianie w Xcode 8
- 27. Symulacja pinch gest w Windows Phone 8 emulator
- 28. Jak zapobiec lub wykryć "Symulację lokalizacji" przez Xcode na swojej aplikacji w produkcji? [Big Issue]
- 29. UTF-8 nie działa w HTML tworzy
- 30. @WebServlet adnotacja nie działa z Tomcat 8
Każdy mający problemy z tym, zmagałem się na chwilę, bo używałem '[locationManager requestWhenInUseAuthorization];' w aplikacji, ale nie ogłosił 'NSLocationAlwaysUsageDescription' w pliku .plist (zauważ różnicę" zawsze "i" w trakcie użytkowania. "To rozwiązanie działa, ale upewnij się, że ** deklarujesz poprawny typ opisu użycia **, albo' NSLocationWhenInUseUsageDescription' lub 'NSLocationAlwaysUsageDescription' (albo może oba) – 1owk3y