IOS 9 Error Domain = kCLErrorDomain Code = 0 “(null)”
Код ниже должен получить текущее местоположение. Но выше возникает ошибка. Функция didUpdateLocations никогда не вызывается.
Выполнение этого на устройстве (iPhone 5s) iOS 9.1. Info.plist имеет необходимые возможности устройства и конфиденциальность. Описание использования местоположения сконфигурировано так, как показано на прилагаемом изображении. Пожалуйста помоги!
let locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() locationManager.delegate = self locationManager.requestAlwaysAuthorization() locationManager.requestLocation() } func locationManager(manager: CLLocationManager, didFailWithError error: NSError) print(error.description) } func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { print(“got location”) }
- iPhone XMLRequest
- Координаты текстуры OpenGL в пиксельном пространстве
- Продолжительность анимации строки UITableView и обратный вызов завершения
- Пользовательский текст UINavigationController "назад"?
- Отправка данных POST с iphone через SSL HTTPS
- Передача параметров addTarget: действие: forControlEvents
- Путь вычитания UIBezierPath
- Создание пользовательского UIKeyBoard для iPhone
- Размер шрифта в пикселях
- Как продлить сертификат разработки iPhone?
- IPhone / IPad: Как получить ширину экрана программно?
- Управление несколькими асинхронными соединениями NSURLConnection
- Преобразование NSDate в NSString
Попробуйте следующее:
Идти к :
- Product -> Scheme -> Edit Scheme -> Options -> Allow Location Simulation необходимо проверить и попытаться предоставить местоположение по умолчанию, не оставляйте его равным “none”
EDIT : Как упоминалось в комментариях, перезапустите Xcode, и все готово!
Надеюсь это поможет.
Если предупреждение о разрешении местоположения не появляется для вас, попробуйте добавить NSLocationAlwaysUsageDescription к вашему plist как строку типа. Также сделайте то же самое для NSLocationWhenInUseUsageDescription.
поиск google true ответов это кажется проблемой с IOS4.0.
в XCODE 7.1 в Project => schem => схеме редактирования.
в разделе «Выполнить» => «Параметры» => «Расположение ядра» / «Отключить».
в вашем симуляторе IOS под Debug => Местоположение выберите местоположение. Это поставило проблему для меня.
У меня была такая же проблема с приложением, что я двигался с 8.0 -> 9.0 / 9.1. Я попробовал пару вещей, например, написать часть CLLocationManager только в Swift и новый проект Obj-C. Я также тестировал его на разных устройствах. Чтобы решить проблему на устройстве, я удалил функцию didFailWithError. Который полностью останавливает ошибку. Это может показаться не лучшей идеей, но в IOS9 вы можете ограничить свое приложение устройствами, которые имеют GPS или Location-Services. Android делает это очень долго. Я также заметил, что в вашем .plist у вас нет разрешений для NSLocationALwaysUsageDescription или включенных свойств NSLocationWhenInUseUsageDescrtiption.
Только для справки я приложил то, что мой текущий .plist выглядит так, что не запускает эту ошибку, а также блок кода в obj-c файле controllerа. Код начинается с самого конца предыдущей функции, а затем закомментирован делегат didFailWithError и didUpdateLocations. В настоящее время это успешно работает в IOS 9.1
//Get map authorization [CLLocationManager locationServicesEnabled]; locationManager = [[CLLocationManager alloc]init]; locationManager.delegate = self; locationManager.allowsBackgroundLocationUpdates = YES; if(nil == locationManager) locationManager = [[CLLocationManager alloc]init]; if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { [locationManager requestAlwaysAuthorization]; } //locationManager.distanceFilter=10; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; //- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error //{ // NSLog(@"didFailWithError: %@", error); // UIAlertView *errorAlert = [[UIAlertView alloc] // initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; // [errorAlert show]; //} -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ NSLog(@"LocationUpdated: %@",[locations lastObject]); [self updateMapMarkers]; // NSDate* eventDate = location.timestamp; // NSTimeInterval howRecent = [eventDate timeIntervalSinceNow]; // if(fabs(howRecent) < 15.0){ // [self updateMapMarkers]; // } }
У меня есть эти предложения для людей, использующих карты apple в своем приложении
- Не релейте по результатам симулятора, потому что всегда он не даст точных результатов.
- Для всех отладочных и тестовых тестов на реальных приложениях.
- Как и в xcode 8 (насколько я знаю), вы можете просто подключить свое устройство iOS к системе и запустить приложение напрямую.
- Даже для вышеуказанной проблемы решение такое же, просто попробуйте с помощью реальных устройств, ваша проблема будет решена.