Nano Hash - криптовалюты, майнинг, программирование

deferredLocationUpdatesAvailable возвращает НЕТ в iOS 10

Я пытаюсь использовать некоторые функции CoreLocation, и у меня возникают проблемы с отложенными обновлениями местоположения.

По какой-то причине, когда приложение было обновлено для iOS 10, deferredLocationUpdatesAvailable всегда возвращает НЕТ. Я тестирую на iPhone 6s, поэтому знаю, что устройство может использовать функции GPS.

Я попытался использовать это для отладки:

[CLLocationManager deferredLocationUpdatesAvailable]

Я не могу понять, проблема ли это в iOS 10 или я что-то неправильно настроил.

В этом методе:

- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error {
    self.deferringUpdates = NO;
    NSLog(@"DEFERRING Error: [%@]", error);
    if (error) {
        [[LocationManagerClient alertWithMessage:error.localizedDescription andTitle:error.domain] show];
    }
}

В итоге я регистрирую эту ошибку:

DEFERRING Error: [Error Domain=kCLErrorDomain Code=11 "(null)"]

Кто-нибудь еще сталкивался с этой проблемой с iOS 10 или знает, что происходит?

Изменить: вот как я устанавливаю фильтр расстояния

- (void)configureForApplicationWillResignActive {
    [_locationManager setAllowsBackgroundLocationUpdates:YES];
    [_locationManager setPausesLocationUpdatesAutomatically:NO];
    [_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [_locationManager setDistanceFilter:kCLDistanceFilterNone];   // use distance filter
    [_locationManager requestAlwaysAuthorization];
}

- (void)configureForApplicationDidBecomeActive {
    [_locationManager setAllowsBackgroundLocationUpdates:YES];
    [_locationManager setPausesLocationUpdatesAutomatically:NO];
    [_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [_locationManager setDistanceFilter:kCLDistanceFilterNone];   // use distance filter
    [_locationManager requestAlwaysAuthorization];
}

  • Вы установили фильтр расстояния, отличный от 0? Это вызовет ошибку 11. Можете ли вы показать, как вы инициализировали свой CLLocationManager? 14.09.2016
  • Отредактировано для более подробной информации. 14.09.2016
  • У нас точно такая же проблема: вызов [CLLocationManager deferredLocationUpdatesAvailable] всегда возвращает NO в iOS 10 на наших устройствах iPhone 6s и 6. Активация отложенных обновлений расположения вызывает kCLErrorDomain Code=11 23.09.2016
  • У меня такая же проблема, iPhone 6S с 10.0.2. Очень расстраивает, потому что я потратил много дней на то, чтобы правильно настроить отложенные обновления. Вы сообщили об этом как об ошибке? 24.09.2016
  • Мы наблюдаем ту же проблему в наших приложениях, deferredLocationUpdatesAvailable() всегда возвращает false в iOS 10.0.2, а активация отложенных расположений вызывает вызов didFinishDeferredUpdatesWithError с kCLErrorDeferredFailed — я подал радар: openradar.appspot.com/radar?id=4927958787555328 25.09.2016
  • Кто-нибудь пробовал на iOS 11? 18.06.2017
  • Пробовал, не работает в iOS 11. 06.07.2017
  • это работает на iOS11.2? я до сих пор с этим борюсь..... 12.12.2017

Ответы:


1

Отложенные обновления теперь официально объявлены устаревшими (в iOS 13). Фактически это признание того, что они не получали поддержки в течение нескольких лет.

17.10.2019

2

Я уже подал Radar (28303779) с доказательством концепции пример кода - также содержит формулировка с радара. Я также открыл сообщение на форуме разработчиков, и оказалось, что многие инженеры сталкиваются с тем же проблема. deferredLocationUpdatesAvailable() также возвращает false в iOS 10. Похоже, Apple намеренно отключила эту функцию.

Обновить

Мой отчет об ошибке был закрыт, говоря, что «он работает так, как предполагалось». Я предполагаю, что Apple не собирается исправлять это, и сначала оно было ошибочно удалено без устаревания.

29.09.2016
  • Я также подал Radar, и мой отчет об ошибке также был закрыт с тем же сообщением от Apple. Это расстраивает. 04.10.2016
  • @erik Я чувствую тебя. Уже работаю над альтернативной реализацией DLU :( 05.10.2016

  • 3

    Похоже, это ошибка в iOS 10.

    Мы должны починить все радары, пожалуйста, скопируйте мой: openradar.appspot.com/radar?id =4927958787555328

    26.09.2016
  • Мой отчет об ошибке был закрыт, говоря, что «он работает так, как предполагалось». Я предполагаю, что Apple не собирается исправлять это, и сначала оно было ошибочно удалено без устаревания. 30.09.2016
  • мой был помечен как дубликат 28561857 и будет закрыт - очень жаль, что нет информации о 28561857 :/ 05.10.2016
  • Теперь то же самое и у меня: мой собственный отчет закрыт, но помечен как дубликат 28561857, который, однако, сам все еще открыт. Интересно, будут ли нам также направлены какие-либо аргументы, когда они закроют 28561857. Я с трудом могу поверить, что они намеренно полностью удалили эту функцию, не объявив ее устаревшей или, по крайней мере, не упомянув ее в каких-либо примечаниях к выпуску. 07.10.2016
  • да, тем более, что похоже, что Apple очень заботится об энергоэффективности, и отложенные обновления местоположения были отличной функцией. 07.10.2016
  • Это не исправлено в iOS 10.1.1, и они не закрыли исходный отчет об ошибке — в моем собственном (закрытом) отчете об ошибке все еще написано «Дубликат 28561857 (открытый)». 05.11.2016
  • Все еще не исправлено в 10.2. 15.12.2016
  • 10.3, до сих пор не исправлено 18.04.2017
  • Не исправлено в iOS 11 06.07.2017
  • Я начинаю задаваться вопросом, не решили ли они просто использовать сопроцессор движения для других задач. Так что, может быть, он вернется только на будущем устройстве, которое будет более мощным? Кто-нибудь пробовал на последних iPhone 8/X? 15.01.2018

  • 4

    Похоже, это "баг". (воспроизведено на iOS11 и iOS12, iPhone 7, iPad mini 4, сотовая связь)

    CLLocationManager.deferredLocationUpdatesAvailable() всегда возвращает false, поэтому код для отложенных обновлений никогда не запускается. Однако, когда приложение находится в фоновом режиме и диспетчер местоположений доставляет позиции через locationManager(_ manager: CLLocationManager, didUpdateLocations location: [CLLocation]), эти позиции задерживаются, как если бы был включен отложенный режим.

    Я думаю, что отложенный API существует только из соображений совместимости со старыми приложениями, а новым приложениям вообще не нужно об этом беспокоиться.

    07.12.2018
  • на какой версии iOS вы тестировали? Я использую iPhone SE с iOS 12.3.1, и кажется, что deferredLocationUpdatesAvailable() возвращает false. 11.06.2019
  • протестировано на iOS11 и iOS12. Я сейчас не пользуюсь отложенными обновлениями и, честно говоря, не скучаю по ним. 11.06.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..