Что означает ошибка Core Motion 102?

Я использую слияние датчиков Core Motion для получения обновлений движения, ориентированных на север:

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:motionQueue withHandler:motionHandler]

В очень редком случае, который можно воспроизвести только на выбранных клиентских устройствах (iPhone 4S под управлением iOS 6.0.2), я получаю эту ошибку в обработчике движения:

Error Domain=CMErrorDomain Code=102 "The operation couldn’t be completed. (CMErrorDomain error 102.)

Кроме того, похоже, после этого я не получаю никаких действительных обновлений deviceMotion. Кто-нибудь знает, что означает эта ошибка 102? Я ничего не могу найти в документации.


person Ortwin Gentz    schedule 02.01.2013    source источник


Ответы (5)


Как правильно указал Кришнабхадра, этот код ошибки означает CMErrorTrueNorthNotAvailable. В описании («Истинный север недоступен на этом устройстве. Обычно это указывает на то, что местоположение устройства еще недоступно».) К сожалению, не дает никаких указаний, как решить проблему, поэтому я хотел бы описать свои выводы, когда это возникает ошибка.

Это происходит на крошечной (горстке из многих тысяч) части устройств iOS 6.0+ при использовании CMAttitudeReferenceFrameXTrueNorthZVertical (CMAttitudeReferenceFrameXMagneticNorthZVertical в порядке). Несмотря на описание ошибки, Core Location работает корректно. На затронутых устройствах ошибка срабатывает в 100% случаев и полностью блокирует обновления Core Motion. -[CMMotionManager deviceMotion] всегда возвращает nil.

Сброс системных настроек iOS решает проблему.

Я зарегистрировал rdar://12952327 с дополнительной информацией.

Обновление: эта ошибка возникает, если калибровка компаса отключена в разделе конфиденциальности/служб определения местоположения/системных служб.

person Ortwin Gentz    schedule 03.01.2013
comment
Ошибка скорее всего из-за того, что Ортвин пишет в Update: калибровка компаса выключена; спасибо, что нашли этого Ортвина! Также обратите внимание, что даже если все в порядке, это нормально, что вы получаете эту ошибку хотя бы один раз, прежде чем появятся настоящие образцы. - person fishinear; 01.02.2016

Из документация

typedef enum {
   CMErrorNULL = 100,
   CMErrorDeviceRequiresMovement,
   CMErrorTrueNorthNotAvailable
} CMError;

Кажется, ошибка 102 - это CMErrorTrueNorthNotAvailable, и ее описание

CMErrorTrueNorthNotAvailable

Кажется, не так много информации о том, что вызывает эту ошибку. Это может быть любая аппаратная проблема с устройством.

person Krishnabhadra    schedule 02.01.2013
comment
Спасибо, я как-то пропустил это в документации. В документах также говорится: обычно это указывает на то, что местоположение устройства еще недоступно. Странно, потому что Core Location вроде работает. - person Ortwin Gentz; 02.01.2013

Кроме того, убедитесь, что это включено. После того, как я включил эту опцию, я больше не сталкивался с проблемой 102 при использовании xTrueNorthZVertical.

Настройки > Конфиденциальность > Службы геолокации > Системные службы > Калибровка компаса

Системные службы iOS 11

person inigo333    schedule 10.01.2018

102 — это CMErrorTrueNorthNotAvailable. Я предполагаю, что у вашего устройства проблемы с определением направления на север или что-то в этом роде.

person Mateusz    schedule 02.01.2013

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

person santhu    schedule 23.12.2014