В iOS 4 магнитометр еще не включен в API перемещения устройства, но обрабатывается CLLocationManager (это изменилось в iOS 5).Поэтому, если у вас есть гироскоп и акселерометр, deviceMotioAvailable
вернет true
независимо от магнитометра.С другой стороны, если гироскоп отсутствует, вы всегда получите false
, и вам нужно остаться с accelerometerData
.
Поскольку Device Motion имеет одну временную метку для обоих датчиков, вы получите надежные интерполированные значения для обоихдатчики.В противном случае Device Motion не сможет выполнить объединение датчиков, главное преимущество в том, что это предпочтительный способ.
Нельзя полагаться на фиксированную частоту для CLLocationManager.didUpdateHeading
вызывается всякий раз, когда система «думает», что это должно быть.Чтобы нормализовать различные временные координаты между CLLocationManager и CMDeviceMotion, вы можете взглянуть на NSTimeInterval для отметки времени unix